Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie gruppiert man die Anzahl der Zeilen pro Tag auch in Tagen ohne Zeilen in MySQL?

Um mit Daten mit 0 entsprechenden Datensätzen umzugehen, verwende ich normalerweise eine Kalendertabelle zum Verbinden.

Erstellen Sie beispielsweise eine Tabelle mit einem Feld namens calendar_date und füllen Sie es mit jedem Datum ab 1st Jan 2000 bis zum 31st Dec 2070 , oder einen anderen Bereich, der Ihren Berichtszwecken entspricht.

Verwenden Sie dann so etwas wie ...

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

Diese Tabelle kann viele zusätzliche Verwendungszwecke haben, z. B. zum Kennzeichnen von Feiertagen, Wochen- und Monatsbeginn. Mit umsichtiger Verwendung von Flags und Indizes können Sie viel daraus machen.