Leçon 5 / 10 — Chapitre 6: GROUP BY et HAVING
L'ordre d'exécution : WHERE avant GROUP BY
WHERE s'applique avant que GROUP BY ne forme ses groupes — les lignes exclues par WHERE n'entrent jamais dans aucun groupe, et ne comptent donc dans aucune agrégation.
SELECT categorie, COUNT(*) FROM produits WHERE prix > 200 GROUP BY categorie;
Ce code filtre d'abord sur prix > 200, excluant Stylo (100 $), puis regroupe les lignes restantes par categorie : papeterie → 1 (seul Cahier reste, Stylo étant déjà exclu), hygiene → 2, boisson → 1, alimentaire → 1.
Comparer avec la version sans WHERE (vue à la deuxième leçon de ce chapitre) : papeterie y valait 2, incluant Stylo. Le filtre WHERE change bien le contenu de chaque groupe, puisqu'il agit en amont du regroupement.
WHERE ne peut pas filtrer sur le résultat d'une agrégation (comme COUNT(*) ou SUM(...)), puisqu'il s'exécute avant que ces agrégations ne soient calculées — filtrer sur un résultat agrégé nécessite HAVING, vu à la prochaine leçon.
À retenir :
WHEREfiltre les lignes avant la formation des groupes : les lignes exclues ne comptent dans aucune agrégation.WHEREne peut pas filtrer sur le résultat d'une fonction d'agrégation, calculée après lui.
À vous de jouer : écrivez une requête qui compte les produits par categorie, en excluant au préalable ceux de stock inférieur à 20.
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