← SQL — Fonctions de fenêtrage
Leçon 9 / 9 — Chapitre 3: LAG et LEAD approfondis
Cas pratique : ne garder que les manches en hausse
Ce cas pratique filtre sur une variation calculée par LAG — ce qui, comme toujours, exige une CTE ou une sous-requête.
WITH progression AS (
SELECT joueur, manche, score,
score - LAG(score) OVER (PARTITION BY joueur ORDER BY manche) AS variation
FROM scores_manche
)
SELECT joueur, manche, score
FROM progression
WHERE variation > 0
ORDER BY joueur, manche;
Étape par étape :
- La CTE
progressioncalcule la variation de chaque manche par rapport à la précédente, pour chaque joueur. - Le filtre
variation > 0ne garde que les manches où le score a strictement progressé. - Pour la toute première manche de chaque joueur,
variationvaut NULL :NULL > 0n'est jamais vrai, donc ces lignes sont exclues — même si, avecIS DISTINCT FROM(leçon 4 de ce chapitre), on aurait pu les considérer comme un « changement ».
Résultat : 2 lignes — la manche 2 de Nadia (10 → 14, hausse) et la manche 2 de Boris (8 → 12, hausse).
À retenir :
- Filtrer sur
variation > 0exclut naturellement la première ligne de chaque partition (variation NULL), sans avoir besoin d'un traitement spécial — contrairement au test d'égalité du piège NULL vu plus tôt dans ce chapitre. - Ce cas pratique combine tous les outils du chapitre : CTE, LAG, calcul de variation, et filtrage sur un résultat de fonction de fenêtre.
À vous de jouer : la manche 1 de Nadia apparaît-elle dans ce résultat ? Justifiez à partir de la valeur de sa variation.
🔒
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