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.