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

Jak pogrupować liczbę wierszy dziennie również w dni bez wierszy w MySQL?

Aby poradzić sobie z datami z 0 odpowiadającymi rekordami, moją normalną praktyką jest używanie tabeli kalendarza do dołączania.

Na przykład utwórz tabelę z jednym polem o nazwie calendar_date i wypełnij go każdą datą od 1st Jan 2000 do 31st Dec 2070 lub inny zakres, który odpowiada Twoim celom raportowania.

Następnie użyj czegoś takiego jak...

SELECT
  calendar.calendar_date,
  COUNT(*)
FROM
  calendar
LEFT JOIN
  yourData
    ON  yourData.timeStamp >= calendar.calendar_date
    AND yourData.timeStamp <  calendar.calendar_date + 1
WHERE
      calendar.calendar_date >= '01 Jan 2012'
  AND calendar.calendar_date <  '04 Jan 2012'
GROUP BY
  calendar.calendar_date

Ta tabela może mieć wiele dodatkowych zastosowań, takich jak oznaczanie świąt państwowych, początek tygodnia i miesiąca. Dzięki ostrożnemu używaniu flag i indeksów możesz wiele z tego uzyskać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. aktualizacja mysql - pomiń puste pola?

  2. Jak mogę pingować bazę danych MySQL i ponownie połączyć się za pomocą PDO?

  3. Wybierz wartości między datą rozpoczęcia a datą zakończenia

  4. Zaktualizuj kolumnę na podstawie pasujących wartości w innej tabeli w mysql

  5. Jak mogę zaimportować bazę danych z MySQL z terminala?