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 : SELECT … FROM … WHERE … GROUP BY … HAVING … ORDER BY … LIMIT … OFFSET.
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 :
WHERE stock > 5(vu au deuxième chapitre) : toutes les lignes deproduitsvérifient cette condition ici, aucune n'est exclue.GROUP BY categorieregroupe les 6 lignes restantes en 4 groupes de catégorie.HAVING COUNT(*) >= 1conserve tous les groupes, puisque chacun a au moins 1 produit.ORDER BY AVG(prix) DESC(vu au quatrième chapitre) trie les 4 groupes par prix moyen décroissant.LIMIT 3garde 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