Leçon 1 / 9 — Chapitre 5: FIRST_VALUE, LAST_VALUE, NTH_VALUE et fenêtres nommées
FIRST_VALUE() : la première valeur de la fenêtre
FIRST_VALUE(colonne) OVER (...) renvoie la valeur de la première ligne de la fenêtre, selon l'ORDER BY précisé — répétée sur toutes les lignes de la partition.
Table reprise du chapitre 3 :
scores_manche
id | joueur | manche | score
1 | Nadia | 1 | 10
2 | Nadia | 2 | 14
3 | Nadia | 3 | 14
4 | Boris | 1 | 8
5 | Boris | 2 | 12
6 | Boris | 3 | 9
SELECT joueur, manche, score,
FIRST_VALUE(score) OVER (PARTITION BY joueur ORDER BY manche) AS premier_score
FROM scores_manche;
Pour Nadia, premier_score vaut 10 sur les 3 lignes : c'est le score de sa toute première manche, répété comme référence sur chacune de ses lignes.
À retenir :
FIRST_VALUE(colonne) OVER (... ORDER BY ...)fige la valeur de la première ligne de la partition, et la répète sur toutes les autres lignes.- Cette valeur ne change jamais d'une ligne à l'autre au sein d'une même partition : elle sert de référence fixe (par exemple, pour mesurer une progression depuis le début).
À vous de jouer : quelle est la valeur de premier_score pour les 3 lignes de Boris ?
À vous de jouer
À faireVoici une table scores_manche :
scores_manche
id | joueur | manche | score
1 | Nadia | 1 | 10
2 | Nadia | 2 | 14
3 | Nadia | 3 | 14
4 | Boris | 1 | 8
5 | Boris | 2 | 12
6 | Boris | 3 | 9
Dans SELECT joueur, manche, score, FIRST_VALUE(score) OVER (PARTITION BY joueur ORDER BY manche) AS premier_score FROM scores_manche;, quelle est la valeur de premier_score pour les 3 lignes de Boris ?
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Un nombre.
À vous de jouer
À faireDans cette même requête, quelle est la valeur de premier_score pour les 3 lignes de Nadia ?
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Un nombre.