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