PaliSkill
SQL avancé

Leçon 5 / 9 — Chapitre 4: CASE WHEN et agrégation conditionnelle

Construire un tableau croisé simple avec CASE

La même technique, appliquée à une colonne numérique plutôt qu'à un simple comptage, construit un petit tableau croisé — plusieurs totaux côte à côte, chacun filtré par une condition différente.

SELECT
  SUM(CASE WHEN statut = 'actif' THEN montant ELSE 0 END) AS total_actif,
  SUM(CASE WHEN statut = 'inactif' THEN montant ELSE 0 END) AS total_inactif
FROM clients;

total_actif additionne montant uniquement pour les lignes actives (120.456 + 85.2 + 60.75 + 120.456 = 386.862) ; total_inactif fait de même pour les lignes inactives (200 + (-150) = 50). Le ELSE 0 est essentiel : sans lui, les lignes qui ne remplissent pas la condition contribueraient NULL à la somme — ce qui, avec SUM, serait simplement ignoré et donnerait par coïncidence le même résultat ici, mais pas dans tous les cas (par exemple avec AVG, qui diviserait par un nombre de lignes différent).

À retenir :

  • Remplacer 1 ELSE 0 par montant ELSE 0 transforme un comptage conditionnel en une somme conditionnelle.
  • Plusieurs colonnes de ce type, côte à côte dans un seul SELECT, forment un tableau croisé simple — une ligne de résultat, plusieurs totaux filtrés différemment.
  • Le ELSE 0 (plutôt que l'absence de ELSE, qui vaudrait NULL) évite des surprises avec des fonctions d'agrégation sensibles au nombre de lignes, comme AVG.

À vous de jouer : quelle est la valeur de total_inactif dans cette requête ?

🔒

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