Page 35 - DCG - SQL - 2025
P. 35
FICHE 14 - Regrouper et filtrer des groupes :
GROUP BY et HAVING
Le concept
La clause GROUP BY permet de regrouper les lignes d'une table selon un ou plusieurs champs et de calculer des
agrégats (somme, moyenne, nombre...) pour chaque groupe.
La clause HAVING permet de filtrer les groupes après regroupement (comme WHERE mais sur les groupes).
Tout champ présent dans le SELECT (hors fonctions d’agrégation) doit impérativement apparaître dans le
GROUP BY.
️ La syntaxe
SELECT champ_groupe, fonction_agregat(champ)
FROM nom_table
GROUP BY champ_groupe
Tous les champs qui sont dans le Select (excepté les agrégats), doivent être dans le Group By
Filtrer les groupes :
SELECT champ_groupe, fonction_agregat(champ)
FROM nom_table
GROUP BY champ_groupe
HAVING fonction_agregat(champ) condition
Exemple expliqué
Table LIGNE_COMMANDE :
NoCommande RefProd Quantité
C01 P1 3
C01 P2 5
C02 P1 1
C03 P3 8
C03 P2 2
Objectif : connaître la quantité totale commandée par produit.
SELECT RefProd, SUM(Quantité)
FROM LIGNE_COMMANDE
GROUP BY RefProd
30