sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo agrupar el número de filas por día también en días sin filas en MySQL?

Para manejar fechas con 0 registros correspondientes, mi práctica normal es usar una tabla de calendario para unirme.

Por ejemplo, cree una tabla con un campo llamado calendar_date y rellénelo con cada fecha desde 1st Jan 2000 al 31st Dec 2070 , o algún otro rango que se adapte a sus propósitos de informes.

Luego usa algo como...

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

Esta tabla puede tener muchos usos adicionales, como marcar días festivos, comienzos de semanas y meses. Con usos prudentes de banderas e índices, puede sacarle mucho provecho.