PaliSkill
SQL — Fonctions de fenêtrage

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

NTH_VALUE() : la valeur à une position donnée

NTH_VALUE(colonne, n) renvoie la valeur de la n-ième ligne du cadre. Comme LAST_VALUE(), elle est sensible au même piège de cadre : sans cadre explicite couvrant toute la partition, la n-ième ligne peut ne pas encore être visible depuis les premières lignes.

SELECT joueur, manche, score,
  NTH_VALUE(score, 2) OVER (
    PARTITION BY joueur ORDER BY manche
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
  ) AS deuxieme_score
FROM scores_manche;

Avec le cadre corrigé, deuxieme_score vaut 14 sur les trois lignes de Nadia (le score de sa manche 2), et 12 sur les trois lignes de Boris.

À retenir :

  • NTH_VALUE(colonne, n) renvoie la valeur de la n-ième ligne du cadre — mais seulement si ce cadre contient au moins n lignes ; sinon, le résultat est NULL.
  • Comme LAST_VALUE, NTH_VALUE doit systématiquement être combinée à un cadre ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING pour donner un résultat fiable, cohérent sur toutes les lignes de la partition.

À vous de jouer : sans ce cadre explicite (avec le cadre par défaut), NTH_VALUE(score, 2) sur la manche 1 de Nadia (où une seule ligne est visible) renverrait-elle 14, ou NULL ?

🔒

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