Leçon 4 / 9 — Chapitre 4: CASE WHEN et agrégation conditionnelle
Agrégation conditionnelle : SUM(CASE WHEN…)
Placer un CASE à l'intérieur d'une fonction d'agrégation permet de compter ou de sommer sélectivement, selon une condition — une technique très utilisée pour construire des rapports avec plusieurs colonnes de résultat à partir d'une seule table.
SELECT
SUM(CASE WHEN statut = 'actif' THEN 1 ELSE 0 END) AS nb_actifs,
SUM(CASE WHEN statut = 'inactif' THEN 1 ELSE 0 END) AS nb_inactifs
FROM clients;
Pour chaque ligne, le premier CASE vaut 1 si statut = 'actif', sinon 0 ; SUM additionne ensuite ces 1 et 0 sur toute la table. Résultat : nb_actifs = 4 (clients 1, 2, 4, 5), nb_inactifs = 2 (clients 3, 6).
À retenir :
SUM(CASE WHEN condition THEN 1 ELSE 0 END)compte les lignes qui remplient une condition — équivalent àCOUNT(*) FILTER (WHERE condition), vu plus loin dans ce chapitre.- Plusieurs
SUM(CASE WHEN ...)dans un mêmeSELECTproduisent plusieurs colonnes de comptage conditionnel, chacune sur sa propre condition, sansGROUP BYni jointure supplémentaire. - Cette technique fonctionne aussi bien pour compter (
THEN 1 ELSE 0) que pour sommer une autre colonne (THEN montant ELSE 0), vu à la leçon suivante.
À vous de jouer : ajoutez une troisième colonne SUM(CASE WHEN montant < 0 THEN 1 ELSE 0 END) AS nb_remboursements, et calculez sa valeur.
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