PaliSkill
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 :

  1. La CTE progression calcule la variation de chaque manche par rapport à la précédente, pour chaque joueur.
  2. Le filtre variation > 0 ne garde que les manches où le score a strictement progressé.
  3. Pour la toute première manche de chaque joueur, variation vaut NULL : NULL > 0 n'est jamais vrai, donc ces lignes sont exclues — même si, avec IS 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 > 0 exclut 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