sql >> Database teknologi >  >> RDS >> Mysql

Sådan udfyldes tom værdi, når der ikke er nogen post på den pågældende dag ved hjælp af MySQL-gruppe ved

Du kan bruge et trick til at generere virtuel tabel med alle de datoer, du har brug for, med en anden tabel (erstat aux med en hvilken som helst tabel i din DB med mindst 31 optaget):

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

Og kom så til bords på det:

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. SQL ORDER BY flere kolonner

  2. Udvidelsen mysqli mangler, phpmyadmin virker ikke

  3. Forstå DROP TABLE Statement i SQL Server

  4. ISDATE() Eksempler i SQL Server