PaliSkill
SQL Intermédiaire

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