PaliSkill
SQL — Fonctions de fenêtrage

Leçon 2 / 9 — Chapitre 1: Classer avec ROW_NUMBER, RANK, DENSE_RANK

ROW_NUMBER()

ROW_NUMBER() OVER (ORDER BY colonne) attribue un numéro de ligne unique, croissant, selon l'ordre indiqué.

SELECT nom, anciennete,
  ROW_NUMBER() OVER (ORDER BY anciennete DESC, id ASC) AS rang
FROM employes;

Trié par ancienneté décroissante (le plus ancien en premier), avec l'id comme départage en cas d'égalité : David (7 ans, id 4) et Farid (7 ans, id 6) sont ex-aequo sur l'ancienneté, mais ROW_NUMBER() leur attribue quand même deux rangs différents et uniques (1 et 2, départagés par id) — jamais le même numéro deux fois.

À retenir :

  • ROW_NUMBER() OVER (ORDER BY colonne) numérote chaque ligne, de 1 à N, sans jamais répéter un numéro.
  • En cas d'ex-aequo sur la colonne de tri, l'ordre entre les lignes concernées n'est pas garanti sans un critère de départage supplémentaire (ici, id ASC).
  • Contrairement à RANK() (leçon 5), ROW_NUMBER() ne laisse jamais deux lignes avec le même numéro.

À vous de jouer : calculez le rang d'Amara dans ce classement global.

🔒

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