sql >> Databasteknik >  >> RDS >> Mysql

Grupp för vecka, hur får man tomma veckor?

SQL kan inte returnera rader som inte finns i någon tabell. För att få den effekt du vill ha behöver du en tabell Weeks (WeekNo INT) med en rad per möjlig vecka på året (vilket, IIRC, är antingen 53 eller 54 möjliga veckor, beroende på hur du räknar).

GÅ sedan med den här tabellen till dina vanliga resultat med en OUTTER JOIN för att få de extra veckorna inlagda.

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

[Uppdatering]:Notera användaren av COUNT(datum) snarare än COUNT(*). SQL kommer inte att inkludera NULL-värden i datumkolumnen när COUNT adderas. Eftersom de saknade veckorna inte kommer att ha några datum i sig, kommer detta korrekt att ge dig 0 händelser för dessa veckor.



  1. Vad är bästa praxis för att begränsa specifika sidor till inloggade användare endast i Codeigniter?

  2. Hur SIN() fungerar i MariaDB

  3. Hur man lägger till ett sidhuvud och en sidfot i ett formulär i Microsoft Access

  4. VISA TABELLER i MariaDB