PaliSkill
SQL débutant

Leçon 8 / 10 — Chapitre 6: GROUP BY et HAVING

Combiner WHERE, GROUP BY, HAVING, ORDER BY

L'ordre d'écriture complet d'une requête SELECT, en intégrant tout ce qui a été vu depuis le début du module, suit toujours cette séquence : SELECTFROMWHEREGROUP BYHAVINGORDER BYLIMITOFFSET.

SELECT categorie, COUNT(*), AVG(prix)
FROM produits
WHERE stock > 5
GROUP BY categorie
HAVING COUNT(*) >= 1
ORDER BY AVG(prix) DESC
LIMIT 3;

Ce que fait chaque partie, dans l'ordre d'exécution réel :

  1. WHERE stock > 5 (vu au deuxième chapitre) : toutes les lignes de produits vérifient cette condition ici, aucune n'est exclue.
  2. GROUP BY categorie regroupe les 6 lignes restantes en 4 groupes de catégorie.
  3. HAVING COUNT(*) >= 1 conserve tous les groupes, puisque chacun a au moins 1 produit.
  4. ORDER BY AVG(prix) DESC (vu au quatrième chapitre) trie les 4 groupes par prix moyen décroissant.
  5. LIMIT 3 garde les 3 premiers groupes de ce tri.

Cette requête affiche donc les 3 catégories au prix moyen le plus élevé, avec leur nombre de produits et leur prix moyen, en excluant uniquement la catégorie au prix moyen le plus bas.

À retenir :

  • L'ordre d'écriture complet est : SELECT/FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET.
  • Chaque clause agit sur le résultat de la précédente, dans cet ordre précis.

À vous de jouer : écrivez une requête qui regroupe par categorie, ne garde que les groupes de plus d'un produit, triés par nombre de produits décroissant.

🔒

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