PaliSkill
SQL — Fonctions de fenêtrage

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

À faire

Voici 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

À faire

Dans 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.

Quitter le module