Leçon 10 / 10 — Chapitre 6: GROUP BY et HAVING
Cas pratique : rapport par catégorie
Cette dernière leçon combine WHERE, GROUP BY, HAVING et ORDER BY dans un rapport complet sur les catégories de produits.
SELECT categorie, COUNT(*), SUM(stock), AVG(prix)
FROM produits
WHERE categorie <> 'boisson'
GROUP BY categorie
HAVING SUM(stock) > 30
ORDER BY AVG(prix) DESC;
Ce que fait chaque partie, dans l'ordre d'exécution :
WHERE categorie <> 'boisson'(vu au deuxième chapitre) exclutJus, laissant 5 lignes en 3 catégories restantes.GROUP BY categorieforme 3 groupes :papeterie(Cahier,Stylo),hygiene(Savon,Dentifrice),alimentaire(Biscuits).HAVING SUM(stock) > 30calcule la somme des stocks par groupe :papeterie→ 40 + 120 = 160 (conservé),hygiene→ 25 + 10 = 35 (conservé),alimentaire→ 60 (conservé) — les trois groupes vérifient la condition ici.ORDER BY AVG(prix) DESCtrie les 3 groupes conservés par prix moyen décroissant :alimentaire(400),hygiene(400, à égalité),papeterie(300).
Le résultat final affiche donc les 3 catégories restantes (toutes ayant vérifié HAVING), triées par prix moyen décroissant, chacune avec son nombre de produits, la somme de ses stocks et son prix moyen.
À vous de jouer : modifiez cette requête pour remplacer HAVING SUM(stock) > 30 par HAVING SUM(stock) > 100, et déterminez quelles catégories seraient alors conservées.
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