Mysql
 sql >> Database >  >> RDS >> Mysql

Raggruppa per settimana, come ottenere settimane vuote?

SQL non può restituire righe che non esistono in alcune tabelle. Per ottenere l'effetto desiderato, avrai bisogno di una tabella Weeks (WeekNo INT) con una riga per ogni possibile settimana dell'anno (che, IIRC, è 53 o 54 possibili settimane, a seconda di come conteggi).

Quindi unisciti a questa tabella con i tuoi risultati regolari con un OUTER JOIN per aggiungere le settimane extra.

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

[Aggiorna]:annota l'utente di COUNT(data) anziché COUNT(*). SQL non includerà i valori NULL nella colonna della data durante la somma di COUNT. Poiché le settimane mancanti non conterranno alcuna data, questo ti darà correttamente 0 eventi per quelle settimane.