Grouper par plusieurs colonnes dans MySQL

Preet Sanghavi 21 janvier 2022
  1. L’instruction Group By dans MySQL
  2. L’instruction GROUP BY dans MySQL avec plusieurs colonnes
Grouper par plusieurs colonnes dans MySQL

Dans ce tutoriel, nous visons à comprendre comment utiliser la commande GROUP BY avec deux colonnes ou plus.

La commande MySQL GROUP BY est une technique qui permet de regrouper des enregistrements avec des valeurs identiques en fonction de critères particuliers définis dans le but de les regrouper. Lorsque l’on essaie de regrouper des données en ne considérant qu’une seule colonne, tous les enregistrements qui possèdent les mêmes valeurs sur lesquelles le critère est défini sont couplés ensemble dans une seule sortie.

Cependant, MySQL permet aux utilisateurs de regrouper les données non seulement avec une seule colonne à considérer, mais également avec plusieurs colonnes. Nous allons explorer cette technique dans la dernière section de ce tutoriel. Pour résumer, lorsque nous essayons de regrouper en considérant plusieurs colonnes, nous pouvons obtenir un résultat dans lequel le regroupement des valeurs de colonne se fait concernant plus d’une colonne avec un critère de regroupement.

Bien que ce concept puisse sembler difficile à mettre en œuvre, commençons par considérer une colonne dans notre instruction GROUP BY.

Cependant, avant de commencer, nous créons un jeu de données factice avec lequel travailler. Ici, nous créons un tableau, student_details, avec quelques lignes dedans.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_grade int,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_grade,stu_lastName) 
 VALUES(1,"Preet",40,"Sanghavi"),
 (2,"Rich",50,"John"),
 (3,"Veron",60,"Brow"),
 (4,"Geo",70,"Jos"),
 (5,"Hash",80,"Shah"),
 (6,"Sachin",90,"Parker"),
 (7,"David",25,"Miller"),
 (8,"Richa",50,"Joh"),
 (9,"Verona",60,"Brow"),
 (10,"Geoa",70,"Josh"),
 (11,"Hasha",80,"Ash"),
 (12,"Allen",90,"Parker");

La requête ci-dessus crée un tableau avec des lignes contenant le prénom et le nom de l’étudiant. Afin de visualiser les entrées dans les données, nous utilisons le code suivant :

SELECT * FROM student_details;

Le code ci-dessus donnerait la sortie suivante :

stu_id	stu_firstName	stu_grade	stu_lastName
1			Preet			40			Sanghavi
2			Rich			50			John
3			Veron			60			Brow
4			Geo				70			Jos
5			Hash			80			Shah
6			Sachin			90			Parker
7			David			25			Miller
8			Richa			50			Joh
9			Verona			60			Brow
10			Geoa			70			Josh
11			Hasha			80			Ash
12			Allen			90			Parker

Essayons maintenant de comprendre l’utilisation d’une simple instruction GROUP BY pour grouper stu_lastName avec la somme de stu_grade comme clause d’agrégation.

L’instruction Group By dans MySQL

Comme nous le savons, l’instruction GROUP BY nous aide à regrouper les enregistrements qui possèdent les mêmes valeurs pour les critères définis. La syntaxe de base de l’instruction GROUP BY est la suivante :

SELECT col_a, col_b, aggregate_function(col_c)
FROM tab_name
WHERE condition GROUP BY criteria_col_1;

On peut trouver la somme des scores des élèves du même nom de famille comme suit :

SELECT SUM(stu_grade), stu_lastName FROM student_details
GROUP BY stu_lastName;

Le code susmentionné donne la sortie suivante :

SUM(stu_grade)	stu_lastName
40				Sanghavi
50				John
120				Brow
70				Jos
80				Shah
180				Parker
25				Miller
50				Joh
70				Josh
80				Ash

L’instruction GROUP BY dans MySQL avec plusieurs colonnes

Comme vu ci-dessus, MySQL fournit la fonctionnalité pour regrouper les enregistrements en fonction d’un critère. Un autre ajout à cette méthode est que nous pouvons regrouper plusieurs colonnes de la table à la fois. La syntaxe pour regrouper plus d’une colonne dans MySQL peut être écrite comme suit :

SELECT col_a, col_b, aggregate_function(col_c)
FROM tab_name
WHERE condition GROUP BY criteria_col_1, criteria_col_2, criteria_col_3;

Comme nous pouvons le voir ci-dessus, criteria_col_1, criteria_col_2 et criteria_col_3 sont les trois colonnes incluses dans la clause GROUP BY.

Essayons maintenant de regrouper les prénoms et les noms des étudiants en fonction de la somme de leurs notes en tant que fonction d’agrégation. Nous pouvons effectuer cette opération avec le code suivant :

SELECT SUM(stu_grade), stu_lastName, stu_firstName
FROM student_details
GROUP BY stu_lastName, stu_firstName;

La sortie du code ci-dessus est la suivante :

SUM(stu_grade)	stu_lastName	stu_firstName
40				Sanghavi		Preet
50				John			Rich
60				Brow			Veron
70				Jos				Geo
80				Shah			Hash
90				Parker			Sachin
25				Miller			David
50	            Joh	            Richa
60				Brow			Verona
70				Josh			Geoa
80				Ash				Hasha
90				Parker			Allen

Comme nous pouvons le voir, la sortie regroupe à la fois les colonnes stu_firstName et stu_lastName. De même, nous pouvons regrouper plusieurs colonnes dans MySQL. Par conséquent, l’instruction GROUP BY peut être utilisée efficacement avec une ou plusieurs colonnes avec les méthodes mentionnées ci-dessus.

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