Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách điền giá trị trống khi không có bản ghi nào trong ngày đó bằng cách sử dụng nhóm MySQL bằng cách

Bạn có thể sử dụng một thủ thuật để tạo bảng ảo có tất cả các ngày bạn cần bằng một bảng khác (thay thế aux với bất kỳ bảng nào trong DB của bạn với ít nhất 31 được lưu trữ lại):

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

Và sau đó tham gia cùng bàn của bạn trên đó:

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. Tại sao 2 truy vấn MySQL này trả về kết quả khác nhau

  2. Lấy tất cả các con theo id cha và mệnh đề where trong mysql

  3. Làm cách nào để nhận tổng số kết quả khi có LIMIT trong truy vấn?

  4. Đối tượng TransactionScope có được hỗ trợ đầy đủ bằng MySqlConnector cho .NET không?

  5. Sử dụng% cho máy chủ khi tạo người dùng MySQL