Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL разделя резултатите от множество подзаявки с множество редове

Ето един начин, по който можете да постигнете всичко чрез следната заявка:

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;

Забележка:

Ако искате резултатът да бъде закръглен до 2 цифри след десетичната запетая, използвайте следното като първи ред на заявката:

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

Демо тук

Внимание: Не сте използвали ORDER BY в заявката си. Може да получите произволно поведение.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разберете кой ред не успява при добавяне на ограничение в MySQL

  2. PHP MYSQL Associate масив и таблица

  3. Как мога да използвам Substring и Replace в един SQL-изявление?

  4. Как мога да запазя резултата от заявка във временна таблица и да използвам таблицата в нова заявка?

  5. Грешка при настройката на първоначалното хранилище в Pentaho Kettle