PaliSkill
SQL débutant

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 : papeterie1 (seul Cahier reste, Stylo étant déjà exclu), hygiene2, boisson1, alimentaire1.

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 :

  • WHERE filtre les lignes avant la formation des groupes : les lignes exclues ne comptent dans aucune agrégation.
  • WHERE ne 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