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