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

Bagaimana cara mengisi celah tanggal di MySQL?

Anda harus membuat tabel pembantu dan mengisinya dengan semua tanggal dari start ke end , lalu LEFT JOIN dengan tabel itu:

SELECT  d.dt AS date,
        COUNT(*) AS total,
        SUM(attitude = 'positive') AS positive,
        SUM(attitude = 'neutral') AS neutral,
        SUM(attitude = 'negative') AS negative
FROM    dates d
LEFT JOIN
        messages m
ON      m.posted_at >= d.dt
        AND m.posted_at < d.dt + INTERVAL 1 DAYS
        AND spam = 0
        AND duplicate = 0
        AND ignore = 0
GROUP BY
        d.dt
ORDER BY
        d.dt

Pada dasarnya, yang Anda butuhkan di sini adalah sumber baris tiruan.

MySQL adalah satu-satunya sistem utama yang tidak memiliki cara untuk menghasilkannya.

PostgreSQL mengimplementasikan fungsi khusus generate_series untuk melakukan itu, sementara Oracle dan SQL Server dapat menggunakan rekursi (CONNECT BY dan CTE rekursif s, sesuai).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan penyisipan MySQL:ER_BAD_FIELD_ERROR:Kolom tidak dikenal '2525' di 'daftar bidang'

  2. SQL Bagaimana menjumlahkan dari tabel lain dan menyisipkan di tabel lain

  3. Cara paling efisien untuk mendapatkan jumlah baris tabel

  4. MySQL - Model Daftar Kedekatan - Dapatkan Kedalaman

  5. Jangan izinkan kunci utama komposit terbalik di MySQL