PaliSkill
SQL — Fonctions de fenêtrage

Leçon 3 / 9 — Chapitre 6: Combiner fenêtres, CASE et sous-requêtes

Une somme conditionnelle : CASE à l'intérieur d'une fonction de fenêtre

Inversement, un CASE peut se trouver à l'intérieur de l'argument d'une fonction de fenêtre — utile pour cumuler seulement certaines lignes selon une condition.

Table reprise du chapitre 4 :

ventes_boutique
id | boutique | mois | montant
1  | Nord     | 1    | 100
2  | Nord     | 2    | 150
3  | Nord     | 3    | 200
4  | Sud      | 1    | 80
5  | Sud      | 2    | 80
6  | Sud      | 3    | 140
SELECT boutique, mois, montant,
  SUM(CASE WHEN montant > 100 THEN montant ELSE 0 END) OVER (PARTITION BY boutique ORDER BY mois) AS cumul_grosses_ventes
FROM ventes_boutique;

Pour Nord : mois 1 (100, pas strictement supérieur à 100) contribue 0 ; mois 2 (150) contribue 150, cumul = 150 ; mois 3 (200) contribue 200, cumul = 350. Seuls les mois où montant dépasse 100 sont réellement additionnés dans le cumul.

À retenir :

  • SUM(CASE WHEN condition THEN colonne ELSE 0 END) OVER (...) cumule sélectivement, en ignorant (en ajoutant 0 pour) les lignes qui ne remplissent pas la condition.
  • Cette technique combine deux outils déjà connus (CASE et un agrégat de fenêtre) pour répondre à une question que ni l'un ni l'autre ne pourrait résoudre seul : « quel est le cumul des seules grosses ventes ? ».

À vous de jouer : quelle est la valeur de cumul_grosses_ventes pour la boutique Sud au mois 3 (montants : 80, 80, 140) ?

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 72 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès