PaliSkill
SQL — Fonctions de fenêtrage

Leçon 9 / 9 — Chapitre 5: FIRST_VALUE, LAST_VALUE, NTH_VALUE et fenêtres nommées

Cas pratique : comparer la progression du début à la fin

Ce cas pratique combine FIRST_VALUE, LAST_VALUE (cadre corrigé) et une fenêtre nommée pour mesurer, pour chaque joueur, l'écart entre son tout premier et son tout dernier score.

SELECT DISTINCT joueur,
  FIRST_VALUE(score) OVER w AS premier_score,
  LAST_VALUE(score) OVER w AS dernier_score,
  LAST_VALUE(score) OVER w - FIRST_VALUE(score) OVER w AS ecart_total
FROM scores_manche
WINDOW w AS (
  PARTITION BY joueur ORDER BY manche
  ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
ORDER BY joueur;

Étape par étape :

  1. La fenêtre nommée w couvre toute la partition de chaque joueur, ce qui rend LAST_VALUE fiable (leçon 3 de ce chapitre).
  2. FIRST_VALUE et LAST_VALUE donnent le score de départ et le score final réels de chaque joueur.
  3. ecart_total mesure la progression globale : pour Nadia, 14 - 10 = 4 ; pour Boris, 9 - 8 = 1.
  4. SELECT DISTINCT réduit les lignes répétées (une par manche) à une seule ligne par joueur, puisque les trois colonnes calculées sont identiques sur toutes les manches d'un même joueur.

Résultat : 2 lignes — Nadia (premier 10, dernier 14, écart 4) et Boris (premier 8, dernier 9, écart 1).

À retenir :

  • Ce cas pratique montre l'intérêt combiné de FIRST_VALUE, LAST_VALUE (avec son cadre corrigé) et d'une fenêtre nommée pour éviter de répéter trois fois la même définition de fenêtre.
  • Nadia progresse davantage (écart de 4) que Boris (écart de 1) entre leur première et leur dernière manche enregistrée.

À vous de jouer : lequel des deux joueurs a le plus grand écart_total, Nadia ou Boris ?

🔒

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