Leçon 6 / 9 — Chapitre 4: CTE et opérateurs ensemblistes
Enchaîner plusieurs CTE
Plusieurs CTE peuvent être définies dans un même WITH, séparées par des virgules — chacune pouvant s'appuyer sur celles définies avant elle, jamais sur celles définies après.
WITH ventes_par_categorie AS (
SELECT p.categorie, SUM(c.quantite) AS total_quantite
FROM produits p
JOIN commandes c ON p.id = c.produit_id
GROUP BY p.categorie
),
categorie_max AS (
SELECT categorie
FROM ventes_par_categorie
ORDER BY total_quantite DESC
LIMIT 1
)
SELECT * FROM categorie_max;
ventes_par_categorie calcule les totaux (papeterie = 5, hygiène = 9, boisson = 1). categorie_max, définie juste après, réutilise ventes_par_categorie pour en extraire la catégorie au total le plus élevé : hygiène (9). La requête principale se contente d'afficher categorie_max — résultat final : 1 ligne, hygiene.
À retenir :
- Plusieurs CTE se déclarent dans un seul
WITH, séparées par des virgules :WITH a AS (...), b AS (...) SELECT .... - Une CTE peut référencer une CTE définie avant elle dans la même clause
WITH, jamais une définie après. - Enchaîner des CTE permet de décomposer un calcul complexe en étapes nommées, chacune réutilisant le résultat de la précédente.
À vous de jouer : ajoutez une troisième CTE qui calcule la moyenne des total_quantite de ventes_par_categorie, et déterminez si elle peut être définie avant ou après categorie_max.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès