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 :
HAVINGfiltre les groupes déjà formés, selon le résultat d'une fonction d'agrégation.HAVINGs'écrit aprèsGROUP 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