PaliSkill
SQL débutant

Leçon 6 / 10 — Chapitre 6: GROUP BY et HAVING

HAVING : filtrer les groupes

HAVING filtre les groupes après leur formation, selon le résultat d'une agrégation — exactement ce que WHERE ne pouvait pas faire (vu à la leçon précédente).

SELECT categorie, COUNT(*) FROM produits GROUP BY categorie HAVING COUNT(*) > 1;

Ce code regroupe d'abord par categorie, calcule COUNT(*) pour chaque groupe, puis ne garde que les groupes dont le compte dépasse 1 : papeterie (2) et hygiene (2) sont conservés ; boisson (1) et alimentaire (1) sont exclus du résultat final.

HAVING s'écrit toujours après GROUP BY, jamais avant :

SELECT categorie, AVG(prix) FROM produits GROUP BY categorie HAVING AVG(prix) > 350;

Ce code ne garde que les catégories dont le prix moyen dépasse 350 $ : hygiene (400) et boisson (600) sont conservées ; papeterie (300) et alimentaire (400, à vérifier précisément) sont à confirmer une par une selon le seuil exact.

HAVING peut référencer directement une fonction d'agrégation (COUNT(*), AVG(prix)...) dans sa condition, ce que WHERE ne permet jamais.

À retenir :

  • HAVING filtre les groupes déjà formés, selon le résultat d'une fonction d'agrégation.
  • HAVING s'écrit après GROUP BY, et peut référencer directement une agrégation dans sa condition.

À vous de jouer : écrivez une requête qui affiche les catégories dont la somme des stocks dépasse 50.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 84 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès