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

Gruppiere nach Woche, wie bekomme ich leere Wochen?

SQL kann keine Zeilen zurückgeben, die in einigen Tabellen nicht vorhanden sind. Um den gewünschten Effekt zu erzielen, benötigen Sie eine Tabelle Weeks (WeekNo INT) mit einer Zeile pro möglicher Woche des Jahres (was, IIRC, entweder 53 oder 54 mögliche Wochen sind, je nachdem, wie Sie zählen).

Verknüpfen Sie diese Tabelle dann mit einem OUTER JOIN mit Ihren regulären Ergebnissen, um die zusätzlichen Wochen hinzuzufügen.

SELECT DATE_FORMAT(date, 'Y:%X - Week:%V') AS regweek, COUNT(date) as number 
    FROM YourTable RIGHT OUTER JOIN Weeks ON WEEK(YourTable.date) = Weeks.WeekNo

[Update]:Beachten Sie den Benutzer von COUNT(date) statt COUNT(*). SQL fügt beim Addieren von COUNT keine NULL-Werte in die Datumsspalte ein. Da die fehlenden Wochen keine Daten enthalten, erhalten Sie korrekterweise 0 Ereignisse für diese Wochen.