SQL GROUP BY : regrouper des valeurs identiques dans un groupe

Si vous souhaitez regrouper des lignes avec des valeurs identiques dans un groupe, l’instruction SQL GROUP BY est la commande qu’il vous faut. La plupart du temps, elle est utilisée en combinaison avec des fonctions d’agrégation.

Qu’est-ce que SQL GROUP BY ?

Dans le Structured Query Language (SQL), SQL GROUP BY est une instruction utilisée pour regrouper les lignes ayant des valeurs identiques. Elle est utilisée avec la commande SQL SELECT et suit l’instruction WHERE. On utilise souvent SQL GROUP BY en combinaison avec des fonctions comme SQL AVG(), SQL COUNT(), MAX(), MIN() ou SUM(). Cela vous permet de effectuer des calculs et d’afficher les résultats dans votre tableau. Cette instruction est particulièrement utile lorsqu’il s’agit de déterminer un ordre ou de relier des valeurs entre elles.

Serveurs virtuels (VPS)
Faites le choix de la performance
  • Virtualisation complète avec accès root
  • Trafic illimité et jusqu'à 1 Gbit/s de bande passante
  • Stockage SSD NVMe rapide et édition Plesk Web Host

Syntaxe et fonctionnement

La syntaxe de base de SQL GROUP BY se présente comme suit :

SELECT colonne1, colonne2, colonne3, ...
FROM nom_du_tableau
GROUP BY colonne1, colonne2, colonne3, ...;
sql

On utilise souvent GROUP BY avec WHERE pour filtrer les résultats avant de les regrouper. La voici :

SELECT colonne1, colonne2, colonne3, ...
FROM nom_du_tableau
WHERE condition
GROUP BY colonne1, colonne2, colonne3, ...
ORDER BY colonne1, colonne2, colonne3, ...;
sql

Exemple d’utilisation avec COUNT()

Pour illustrer l’utilisation de SQL GROUP BY, nous allons créer un tableau simple appelé « Liste des clients ». Celui-ci contient différentes colonnes : Numéro de client, Nom, Ville et Articles.

Numéro de client Nom Ville Articles
1427 Berron Paris 13
1377 Froissy Strasbourg 9
1212 Sulis Strasbourg 15
1431 Verdon Lille 22
1118 Paré Paris 10

Nous pouvons maintenant utiliser SQL GROUP BY, par exemple en combinaison avec la fonction COUNT(), pour lister de quelles villes proviennent combien de clients. Voici le code correspondant :

SELECT Ville, COUNT(*) AS Nombre
FROM Liste des clients
GROUP BY Ville;
sql

Comme résultat, nous obtenons ce nouveau tableau :

Ville Nombre
Lille 1
Paris 2
Strasbourg 2

Nous utilisons ici les alias SQL pour afficher les résultats sous forme de « nombre ».

L’instruction en combinaison avec SUM()

Dans l’exemple suivant, nous utilisons SQL GROUP BY en combinaison avec SUM() pour déterminer et afficher combien d’articles ont été commandés depuis Strasbourg. Pour cela, nous utilisons ce code :

SELECT Ville, SUM(Articles) AS Total
FROM Liste des clients
WHERE Ville = 'Strasbourg'.
GROUP BY Ville;
sql

Nous obtenons comme résultat :

Ville Total
Strasbourg 24

Application avec ORDER BY

Une combinaison avec ORDER BY est également possible. Dans ce cas, nous trions notre tableau en fonction du nombre le plus élevé d’articles commandés par client et par ville. Nous commençons par la ville dans laquelle un client a acheté le plus d’articles. Le code correspondant, pour lequel nous combinons SQL GROUP BY avec la fonction MAX() et ORDER BY, est le suivant :

SELECT Ville, MAX(Articles) AS Quantité (ordre décroissant)
FROM Liste des clients
GROUP BY Ville ORDER BY Quantité DESC;
sql

La sortie correspondante est alors la suivante :

Ville Quantité (ordre décroissant)
Lille 22
Strasbourg 15
Paris 13

Combinaison avec l’instruction HAVING

Vous pouvez également combiner SQL GROUP BY avec SQL HAVING. Dans l’exemple suivant, nous retirons de la liste les clients dont le numéro de client est inférieur à 1300. Nous trions les autres personnes en fonction du nombre d’articles qu’elles ont commandés, dans l’ordre croissant. Voici à quoi ressemble le code :

SELECT Ville, Numéro de client, MIN(Articles) AS Quantité (ordre croissant)
FROM Liste des clients
GROUP BY Ville, Numéro de client HAVING Numéro de client > 1300;
sql

Nous obtenons ainsi ce tableau comme nouvelle sortie :

Ville Numéro de client Quantité (ordre croissant)
Strasbourg 1377 9
Paris 1427 13
Lille 1431 22

Alternatives à SQL GROUP BY

Une alternative populaire à SQL GROUP BY est l’instruction PARTITION BY. La différence est que toutes les valeurs d’origine sont conservées et affichées. De plus, de nombreuses fonctions d’agrégation mentionnées plus haut fonctionnent également sans SQL GROUP BY.

Conseil

Une base de données sur mesure : avec le serveur d’hébergement SQL de IONOS, vous n’avez pas seulement le choix entre MSSQL, MySQL ou MariaDB, mais vous bénéficiez dans tous les cas d’une performance exceptionnelle, de fonctions de sécurité puissantes et d’un conseil personnalisé.

Cet article vous a-t-il été utile ?
Page top