Regrouper par mois dans MySQL

Preet Sanghavi 28 mars 2022
Regrouper par mois dans MySQL

Dans ce tutoriel, nous allons apprendre à regrouper des valeurs par mois dans une base de données MySQL.

Les entreprises et les organisations doivent trouver des données sur les utilisateurs ou les clients en fonction de leurs achats ou de leurs tendances d’utilisation au cours des mois. Une entreprise particulière peut déduire des données pertinentes si elle réalise les mois optimaux pour stimuler l’activité, et MySQL nous assiste dans cette tâche.

MySQL nous fournit la fonction date_format(), contenant deux valeurs principales. Le premier est le nom de la colonne considérée, et le second est la période de temps pour le regroupement.

Une fois notre fonction configurée, nous pouvons regrouper différentes périodes de temps à l’aide de la clause GROUP BY de MySQL. La syntaxe de cette opération est la suivante.

select date_format(date_column, '%M'),sum(any_other_column)
from name_of_the_table
group by date_format(date_column, '%M');

Cette syntaxe suppose que nous souhaitons regrouper les valeurs de any_other_column par mois. Par conséquent, il fournit le total d’une colonne particulière pour chaque mois de notre table.

Voyons cette méthode en action.

Mais avant de commencer, créons un jeu de données factice en créant une table, student_semester_date avec quelques lignes.

-- create the table student_semester_date
CREATE TABLE student_semester_date(
  stu_id int,
  stu_date date, 
  stu_marks int
);

Insérons ensuite quelques lignes dans ce tableau à l’aide de la requête ci-dessous.

-- insert rows in the table student_semester_date
insert into student_semester_date(stu_id,stu_date,stu_marks)
     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);

Les deux requêtes ci-dessus créent un tableau avec des lignes contenant les noms et prénoms des étudiants.

SELECT * FROM student_semester_date;

Production :

stu_id	stu_date	stu_marks
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

Essayons de regrouper les notes des différents étudiants en fonction des mois de la colonne stu_date. Cela impliquerait essentiellement de compter le total des notes pour chaque mois dans notre table student_semester_date.

Regrouper par mois dans MySQL

Comme nous avons vu la syntaxe ci-dessus, nous pouvons opérer le regroupement des notes par mois dans notre table student_semester_date à l’aide de la requête suivante.

select date_format(stu_date, '%M') as Month,sum(stu_marks) as total_marks
from student_semester_date
group by date_format(stu_date, '%M');

Le code susmentionné renvoie le total des notes pour chaque mois dans la table student_semester_date.

Cela signifierait que pour novembre, nous aurions 400 car il y a deux entrées dans notre tableau pour novembre avec les notes 250 et 150 (250 + 150 = 400). La sortie de la requête susmentionnée est la suivante.

Month       total_marks
October		250
November	400
December	600

Note : Nous utilisons les alias Month et total_marks dans le code susmentionné pour une meilleure lisibilité avec le mot-clé AS dans MySQL.

Ainsi, à l’aide de la fonction date format() et de l’instruction group by, nous pouvons regrouper efficacement les valeurs par mois dans une table particulière de MySQL.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Article connexe - MySQL Query