Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment regrouper le nombre de lignes par jour également les jours sans ligne dans MySQL ?

Pour gérer les dates avec 0 enregistrement correspondant, ma pratique habituelle consiste à utiliser une table de calendrier pour me joindre.

Par exemple, créez une table avec un champ appelé calendar_date et remplissez-le avec chaque date à partir du 1st Jan 2000 au 31st Dec 2070 , ou une autre plage adaptée à vos besoins de création de rapports.

Ensuite, utilisez quelque chose comme...

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

Cette table peut avoir de nombreuses utilisations supplémentaires, telles que le marquage des jours fériés, des débuts de semaines et de mois. Avec une utilisation prudente des drapeaux et des index, vous pouvez en tirer beaucoup de profit.