Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL membagi hasil dari beberapa subquery dengan beberapa baris

Inilah salah satu cara Anda dapat menyelesaikan semuanya dengan kueri berikut:

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;

Catatan:

Jika Anda ingin hasilnya dibulatkan hingga 2 digit setelah titik desimal, gunakan yang berikut ini sebagai baris pertama kueri:

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

Demo Di Sini

Perhatian: Anda belum pernah menggunakan ORDER BY dalam kueri Anda. Anda mungkin mendapatkan perilaku acak.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C# Dengan Asp.net MySQL dengan OBDC Membuat Login dan Registrasi Tidak Berfungsi

  2. Mengubah angka menjadi kata di Mysql

  3. Bantuan PHP/MYSQL - T_VARIABLE yang tidak terduga

  4. Bagaimana cara menggunakan ON DUPLICATE KEY UPDATE di MySQL tanpa indeks UNIK atau KUNCI UTAMA?

  5. Indeks terakhir dari substring yang diberikan di MySQL