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

Agrupar por semana, ¿cómo conseguir semanas vacías?

SQL no puede devolver filas que no existen en alguna tabla. Para obtener el efecto que desea, necesitará una tabla Weeks (WeekNo INT) con una fila por semana posible del año (que, IIRC, es 53 o 54 semanas posibles, según cómo cuente).

Luego, ÚNASE esta tabla a sus resultados regulares con una UNIÓN EXTERNA para agregar las semanas adicionales.

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

[Actualización]:tenga en cuenta el usuario de COUNT (fecha) en lugar de COUNT (*). SQL no incluirá valores NULL en la columna de fecha al sumar COUNT. Dado que las semanas que faltan no tendrán ninguna fecha, esto le dará correctamente 0 eventos para esas semanas.