PaliSkill
SQL débutant

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 :

  1. WHERE categorie <> 'boisson' (vu au deuxième chapitre) exclut Jus, laissant 5 lignes en 3 catégories restantes.
  2. GROUP BY categorie forme 3 groupes : papeterie (Cahier, Stylo), hygiene (Savon, Dentifrice), alimentaire (Biscuits).
  3. HAVING SUM(stock) > 30 calcule 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.
  4. ORDER BY AVG(prix) DESC trie 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