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
ettotal_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.