XamSQL — la salle de sport SQL des francophones

Agrégation · 20 min

HAVING : filtrer les groupes

Apprendre à filtrer les groupes avec HAVING après GROUP BY, notamment sur des agrégats (COUNT, AVG...).

Contexte

WHERE filtre les lignes individuelles ; HAVING filtre les groupes (après regroupement).

Explication

HAVING condition filtre sur les agrégats calculés par GROUP BY. La condition peut utiliser COUNT, AVG, SUM, MIN, MAX.

Règles :

Syntaxe :

SELECT col1, AVG(col) AS moy FROM une_table GROUP BY col1 HAVING AVG(col)>=seuil;

Exemple guidé

Étudiants avec moyenne générale >= 10 :

SELECT etudiant_id, ROUND(AVG(note),2) AS moy FROM notes GROUP BY etudiant_id HAVING AVG(note)>=10 ORDER BY moy DESC;

Résultat :

etudiant_idmoy
1013.17
313.0
512.83
112.63
1112.5
612.5
212.5
812.25
412.25
712.0

HAVING filtre après le GROUP BY, c'est-à-dire sur les agrégats calculés. WHERE ne peut pas filtrer sur une fonction d'agrégation.

À retenir

HAVING = filtre de groupes (sur agrégats). Ne pas utiliser WHERE sur agrégats. Combinaison WHERE + GROUP BY + HAVING + ORDER BY + LIMIT possible.

Exercices de cette leçon

Faire les exercices →