← 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 :
- La fenêtre nommée
wcouvre toute la partition de chaque joueur, ce qui rend LAST_VALUE fiable (leçon 3 de ce chapitre). FIRST_VALUEetLAST_VALUEdonnent le score de départ et le score final réels de chaque joueur.ecart_totalmesure la progression globale : pour Nadia, 14 - 10 = 4 ; pour Boris, 9 - 8 = 1.SELECT DISTINCTré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