sql >> Database >  >> RDS >> Mysql

Hoe het aantal rijen per dag groeperen, ook in dagen zonder rij in MySQL?

Om met datums om te gaan met 0 corresponderende records, is het mijn normale gewoonte om een ​​kalendertabel te gebruiken om mee te doen.

Maak bijvoorbeeld een tabel met één veld genaamd calendar_date en vul het in met elke datum vanaf 1st Jan 2000 tot 31st Dec 2070 , of een ander bereik dat geschikt is voor uw rapportagedoeleinden.

Gebruik dan iets als...

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

Deze tabel kan veel extra toepassingen hebben, zoals het markeren van feestdagen, begin van weken en maanden. Met verstandig gebruik van vlaggen en indexen kun je er veel uit halen.



  1. SQL, hulptabel met getallen

  2. Null/lege string doorgeven aan Oracle opgeslagen procedure van asp.net

  3. Bereken de totale tijdsduur op de laatste rij in mysql

  4. Wanneer wordt een verbinding gesloten bij het aanroepen van JooQ DSLContext's .close(), of helemaal niet?