Regroupement par semaine dans MySQL : fonction SEMAINE ANNÉE
MySQL propose une fonction SEMAINE ANNÉE qui peut être utilisée pour regrouper les données par semaine. Cette fonction renvoie une chaîne représentant l'année et le numéro de la semaine pour une date donnée. Par exemple :
SELECT YEARWEEK('2023-03-08')
renvoie « 202309 ». Cela indique que le 8 mars 2023 tombe dans la 9ème semaine de 2023.
La fonction YEARWEEK inclut un deuxième argument facultatif qui spécifie le mode de début de semaine. La valeur par défaut est 1, ce qui indique que la semaine commence le dimanche. Un mode 0 indique que la semaine commence le lundi, et un mode 2 indique que la semaine commence le samedi.
Pour regrouper les données par semaine à l'aide de la fonction SEMAINE ANNÉE :
SELECT YEARWEEK(date, 0), COUNT(*) FROM table GROUP BY YEARWEEK(date, 0)
Cette requête regroupe les lignes du « tableau » par semaine de l'année, en supposant que les semaines commencent le lundi. La fonction 'COUNT(*)' compte le nombre de lignes dans chaque semaine.
Combinaison des fonctions ANNÉE et SEMAINE
Une approche alternative au regroupement par semaine consiste à utiliser une combinaison des fonctions ANNÉE et SEMAINE. Cela peut être utile si vous souhaitez plus de contrôle sur la logique de regroupement. Par exemple, la requête suivante regroupe les données par année et par numéro de semaine, quel que soit le mode de début de semaine :
SELECT YEAR(date), WEEK(date), COUNT(*) FROM table GROUP BY YEAR(date), WEEK(date)
EDIT :
Comme l'a noté Martin dans les commentaires, vous pouvez également utiliser la formule suivante pour regrouper par semaine :
CONCAT(YEAR(date), '/', WEEK(date))
Cette approche peut être plus agréable à l'œil que d'utiliser YEARWEEK fonction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!