PaliSkill
SQL avancé

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

Cas pratique : un rapport à trois catégories

Ce cas pratique combine agrégation conditionnelle et FILTER dans une seule requête — les notions de ce chapitre.

SELECT
  SUM(CASE WHEN statut = 'actif' AND montant >= 100 THEN 1 ELSE 0 END) AS gros_actifs,
  SUM(CASE WHEN statut = 'actif' AND montant < 100 THEN 1 ELSE 0 END) AS petits_actifs,
  COUNT(*) FILTER (WHERE statut = 'inactif') AS inactifs
FROM clients;

Étape par étape :

  1. gros_actifs compte les clients actifs avec montant >= 100 : les clients 1 et 5 (120.456 chacun) — 2.
  2. petits_actifs compte les clients actifs avec montant < 100 : les clients 2 (85.2) et 4 (60.75) — 2.
  3. inactifs, via FILTER, compte les clients 3 et 6 — 2.

Résultat final : gros_actifs = 2, petits_actifs = 2, inactifs = 2 — les 6 clients se répartissent exactement en trois groupes égaux.

À retenir :

  • Plusieurs colonnes calculées par agrégation conditionnelle (via CASE ou FILTER) peuvent cohabiter dans un même SELECT, chacune avec sa propre condition.
  • Vérifier que la somme des sous-groupes retombe sur le total de la table (ici, 2 + 2 + 2 = 6) est une bonne habitude pour détecter une condition mal formulée qui laisserait des lignes de côté ou en compterait deux fois.

À vous de jouer : les trois totaux de ce résultat (gros_actifs, petits_actifs, inactifs) somment-ils bien aux 6 lignes de la table clients ?

🔒

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