PaliSkill
SQL — Fonctions de fenêtrage

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

FIRST_VALUE() est insensible au cadre par défaut

Le cadre par défaut d'une fonction avec ORDER BY est RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW — sa borne de départ est toujours le début de la partition, quelle que soit la ligne courante. C'est pour cette raison que FIRST_VALUE() renvoie toujours la bonne valeur, peu importe la ligne : la première ligne de la partition est toujours incluse dans le cadre, du début à la fin.

SELECT joueur, manche, score,
  FIRST_VALUE(score) OVER (PARTITION BY joueur ORDER BY manche) AS premier_score
FROM scores_manche;

Que l'on regarde la manche 1, 2 ou 3 de Nadia, premier_score vaut 10 dans les trois cas — sans avoir besoin de préciser un cadre explicite.

À retenir :

  • FIRST_VALUE() ne souffre d'aucun piège lié au cadre par défaut, contrairement à LAST_VALUE() (leçon suivante) : sa valeur de référence est toujours à portée, quelle que soit la borne de fin du cadre.
  • Cette asymétrie entre FIRST_VALUE et LAST_VALUE vient uniquement de la position de la valeur recherchée par rapport au début du cadre par défaut.

À vous de jouer : la valeur de premier_score change-t-elle si on ajoute explicitement ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW à cette requête ? Répondez par oui ou non.

🔒

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