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

Cara mengisi nilai kosong saat tidak ada record pada hari itu dengan menggunakan MySQL group by

Anda dapat menggunakan trik untuk menghasilkan tabel virtual yang memiliki semua tanggal yang Anda butuhkan dengan tabel lain (ganti aux dengan tabel apa pun di DB Anda dengan setidaknya 31 yang direkam):

SELECT CONVERT(@d := DATE_ADD(@d, INTERVAL 1 DAY), DATE) AS `d`
FROM
    `aux`,
    (SELECT @d := DATE_SUB(CONVERT(DATE_FORMAT(NOW(), '%Y-%m-01'), DATETIME), INTERVAL 1 DAY)) `x`
WHERE
    @d < DATE_SUB(NOW(), INTERVAL 1 DAY)
LIMIT
    31

Dan kemudian bergabung dengan meja Anda di atasnya:

SELECT
    `aux`.`d` as `Date`,
    SUM(IFNULL(`Clicks`, 0))AS `Clicks`,
    DAY(LAST_DAY(NOW())) AS `Monthdays`
FROM (
    SELECT CONVERT(@d := DATE_ADD(@d, INTERVAL 1 DAY), DATE) AS `d`
    FROM
        `aux`,
        (SELECT @d := DATE_SUB(CONVERT(DATE_FORMAT(NOW(), '%Y-%m-01'), DATETIME), INTERVAL 1 DAY)) `x`
    WHERE
        @d < DATE_SUB(NOW(), INTERVAL 1 DAY)
    LIMIT
        31
) aux
LEFT JOIN
    myTbl
    ON `Date` = `aux`.`d`
GROUP BY `aux`.`d`



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Isi daftar Dropdown tergantung pada pilihan Dropdown lain menggunakan Ajax

  2. Cara Menggabungkan Beberapa Baris Menjadi Satu Kolom di MySQL

  3. Menambahkan hasil database ke array

  4. SET NAMA utf8 di MySQL?

  5. cURL dan PHP menampilkan 1