Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wypełnić pustą wartość, gdy w tym dniu nie ma rekordu przy użyciu grupy MySQL według

Możesz użyćsztuczki do wygenerowania wirtualnej tabeli zawierającej wszystkie potrzebne daty inną tabelą (zastąp aux z dowolną tabelą w bazie danych z co najmniej 31 rekordami):

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

A potem dosiądź do stołu:

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. MySQL:Tworzenie nowej tabeli z informacjami z zapytania

  2. Jak zarządzać bazami danych, użytkownikami i tabelami MySQL z wiersza poleceń

  3. Jak uzyskać ostatnio wstawiony identyfikator z tabeli MySQL?

  4. Tablica wyszukiwania PHP/MySql z tablicą

  5. Jak połączyć R z MySQL lub jak zainstalować pakiet RMySQL?