Parfois, vous devrez peut-être agréger les données par mois dans MySQL. Dans cet article, nous examinerons différentes manières de regrouper par mois dans MySQL.
Comment regrouper par mois dans MySQL
Nous utiliserons date_format fonction pour formater la date en valeurs de mois et grouper par mois.
Voici la syntaxe de la fonction date_format.
date_format(valeur, chaîne de format)
Dans la fonction ci-dessus, vous devez spécifier la valeur en tant que littéral, un autre nom de fonction ou de colonne et une chaîne de format qui spécifie le format dans lequel cette valeur doit être convertie.
Voici un exemple pour convertir une chaîne de date en mois.
mysql> SELECT DATE_FORMAT("2020-06-15", "%M");+--------------------------- ------+| DATE_FORMAT("2020-06-15", "%M") |+--------------------------------- +| juin |+--------------------------------+
Disons que vous avez une table ventes(id, date_commande, montant)
mysql> créer une table sales(id int, order_date date, amount int);mysql> insérer dans sales(id,order_date,amount) values(1,'2020-10-01',150), (2,' 2020-10-10',100), (3,'2020-11-05',250), (4,'2020-11-15',150), (5,'2020-12-01',350 ), (6,'2020-12-21',250);mysql> select * from sales;+------+------------+------ --+| identifiant | date_commande | montant |+------+-----------+--------+| 1 | 2020-10-01 | 150 || 2 | 2020-10-10 | 100 || 3 | 2020-11-05 | 250 || 4 | 2020-11-15 | 150 || 5 | 2020-12-01 | 350 || 6 | 2020-12-21 | 250 |+------+------------+--------+
Lire aussi :Comment supprimer la contrainte NOT NULL dans MySQL
Regrouper par nom de mois
Voici la requête SQL pour regrouper par nom de mois.
mysql> select date_format(order_date, '%M'),sum(amount) from sales group by date_format(order_date, '%M');+--------------- ----------------+-------------+| format_date(date_commande, '%M') | somme(montant) |+-------------------------------+----------- -+| décembre | 600 || novembre | 400 || octobre | 250 |+-------------------------------+-------------+Dans la requête SQL ci-dessus, nous utilisons date_format(order_date, "%M") pour convertir une colonne de date en nom de mois et utiliser sum colonne pour additionner les montants des ventes.
Regrouper par mois et année
Voici la requête SQL à regrouper par mois et par année.
mysql> select date_format(order_date, '%M %Y'),sum(amount) from sales group by year(order_date),month(order_date);+------------- ---------------------+----------------------+| format_date(date_commande, '%M %Y') | somme(montant) |+---------------------------------+--------- ----+| octobre 2020 | 250 || novembre 2020 | 400 || décembre 2020 | 600 |+---------------------------------+------------ -+Dans la requête ci-dessus, nous utilisons date_format pour convertir les valeurs de la colonne de date en noms de mois et d'année. Nous utilisons également les fonctions YEAR() et MONTH() pour nous assurer que les données sont regroupées et classées par mois et par année.
Dans la requête ci-dessus, si nous utilisons date_format fonction dans la clause group by, alors MySQL triera les groupes par ordre alphabétique, au lieu de chronologiquement. Voir ci-dessous.
mysql> select date_format(order_date, '%M'),sum(amount) from sales group by date_format(order_date, '%M');+--------------- ----------------+-------------+| format_date(date_commande, '%M') | somme(montant) |+-------------------------------+----------- -+| décembre | 600 || novembre | 400 || octobre | 250 |+-------------------------------+-------------+Besoin d'un outil de reporting pour MySQL ? Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !