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 l'attestation finale.

8 000 XOF / 12,20 € / 13,29 $

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

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.