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.
- 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, ...;
sqlOn 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, ...;
sqlExemple 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;
sqlComme 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;
sqlNous 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;
sqlLa 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;
sqlNous 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
.
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é.