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

Come raggruppare il numero di righe al giorno anche nei giorni senza righe in MySQL?

Per gestire le date con 0 record corrispondenti, la mia pratica normale consiste nell'utilizzare una tabella del calendario a cui partecipare.

Ad esempio, crea una tabella con un campo chiamato calendar_date e compilalo con ogni data dal 1st Jan 2000 al 31st Dec 2070 , o un altro intervallo adatto ai tuoi scopi di segnalazione.

Quindi usa qualcosa come...

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

Questa tabella può avere molti usi extra, come segnalare i giorni festivi, l'inizio di settimane e mesi. Con un uso prudente di flag e indici, puoi ricavarne molto.