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