Leçon 6 / 9 — Chapitre 1: Classer avec ROW_NUMBER, RANK, DENSE_RANK
RANK() et DENSE_RANK() : gérer les ex-aequo
RANK() et DENSE_RANK() gèrent les ex-aequo différemment de ROW_NUMBER() : deux lignes à égalité reçoivent le même rang.
SELECT nom, equipe, anciennete,
RANK() OVER (PARTITION BY equipe ORDER BY anciennete DESC) AS rang
FROM employes;
Dans l'équipe support, David et Farid sont ex-aequo à 7 ans : tous deux reçoivent le rang 1. Elise, la seule autre du groupe, ne reçoit pas le rang 2, mais le rang 3 — RANK() saute un rang pour chaque ligne ex-aequo.
SELECT nom, equipe, anciennete,
DENSE_RANK() OVER (PARTITION BY equipe ORDER BY anciennete DESC) AS rang
FROM employes;
DENSE_RANK() ne saute rien : Elise reçoit ici le rang 2, directement après le rang 1 partagé par David et Farid.
À retenir :
RANK()attribue le même rang aux lignes ex-aequo, puis saute autant de rangs que de lignes à égalité pour la suivante.DENSE_RANK()attribue aussi le même rang aux ex-aequo, mais ne saute jamais de rang pour la ligne suivante.ROW_NUMBER()(leçon 2), lui, ne laisse jamais deux lignes avec le même numéro, même en cas d'égalité.
À vous de jouer : recalculez RANK() et DENSE_RANK() pour l'équipe ventes (Amara, Baptiste, Chloé) et comparez.
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