sql >> Database teknologi >  >> RDS >> Mysql

MYSQL opdeler resultater fra flere underforespørgsler med flere rækker

Her er en måde, hvorpå du kan opnå det hele med følgende forespørgsel:

SELECT 
(dividendTable.messages / divisorTable.messages) AS result
FROM
(
    SELECT 
    firstTable.messages,
    @rn1 := @rn1 + 1 AS row_number
    FROM 
    (
        SELECT
            COUNT(channel) AS messages
        FROM Chats
        WHERE   message LIKE '%word%'
        GROUP BY    UNIX_TIMESTAMP(time) DIV 3600
    ) FirstTable, (SELECT @rn1 := 0) var1
) AS dividendTable
INNER JOIN
(   
    SELECT 
    secondTable.messages,
    @rn2 := @rn2 + 1 AS row_number
    FROM
    (
        SELECT 
            COUNT(channel) AS messages 
        FROM Chats 
        GROUP BY UNIX_TIMESTAMP(time) DIV 3600
    ) secondTable, (SELECT @rn2 := 0) var2
) AS divisorTable
ON dividendTable.row_number = divisorTable.row_number;

Bemærk:

Hvis du vil have resultatet rundet op til 2 cifre efter decimaltegnet, skal du bruge følgende som den første linje i forespørgslen:

SELECT
ROUND((dividendTable.messages / divisorTable.messages),2) AS result

Demo her

Forsigtig: Du har ikke brugt nogen ORDER BY i din forespørgsel. Du kan få tilfældig adfærd.




  1. SQL-forespørgsel til at matche søgeord?

  2. Skriv en insert-sætning med select-sætning, der returnerer id i oracle

  3. Tidsrum - Tjek for ugedag og tidspunkt på dagen i mysql

  4. Hvordan dræber du alle nuværende forbindelser til en SQL Server 2005-database?