MySQL : Grouper par premier jour de la semaine

Il peut parfois être plus utile et plus précis de grouper des données par semaine plutôt que par mois. Cela peut paraître plus compliqué car le numéro de semaine n’apparaît pas visuellement dans un champ de type date (YYYY-MM-DD).

Pourtant, grâce aux fonctions MySQLDATE_ADD, WEEKDAY et INTERVAL, nous pouvons facilement obtenir la date du premier jour de la semaine d’une date donnée, et ainsi, grouper des valeurs de manière hebdomadaire.

SELECT 
    SUM(colonne_chiffre) AS group_total, 
    DATE_ADD(colonne_date, INTERVAL(-WEEKDAY(colonne_date)) DAY) AS group_date 
FROM table 
WHERE 1 
GROUP BY group_date 
ORDER BY group_date ASC

Dans cet exemple, les données de la colonne colonne_chiffre seront groupées par la date du lundi de la semaine de la date colonne_date