Leçon 5 / 9 — Chapitre 1: Classer avec ROW_NUMBER, RANK, DENSE_RANK
PARTITION BY sur plusieurs colonnes
PARTITION BY accepte plusieurs colonnes séparées par une virgule : le calcul repart alors à zéro pour chaque combinaison distincte de ces colonnes.
Voici une petite table ventes_journalieres :
ventes_journalieres
id | vendeur | region | montant
1 | Aya | nord | 200
2 | Aya | nord | 250
3 | Aya | sud | 150
4 | Boubou | nord | 300
5 | Boubou | sud | 100
6 | Boubou | sud | 180
SELECT vendeur, region, montant,
ROW_NUMBER() OVER (PARTITION BY vendeur, region ORDER BY montant DESC) AS rang
FROM ventes_journalieres;
Chaque combinaison (vendeur, region) forme sa propre partition : (Aya, nord) contient 2 lignes (250 → rang 1, 200 → rang 2) ; (Aya, sud) n'en contient qu'une (150 → rang 1) ; (Boubou, nord) une seule aussi (300 → rang 1) ; (Boubou, sud) en contient 2 (180 → rang 1, 100 → rang 2).
À retenir :
PARTITION BY colonne1, colonne2forme une partition par combinaison distincte des deux colonnes, pas par colonne séparément.- Deux lignes qui partagent
colonne1mais diffèrent surcolonne2appartiennent à des partitions différentes. - Cette technique convient dès qu'un classement doit se faire « par vendeur ET par région », plutôt que par l'un ou l'autre séparément.
À vous de jouer : quel rang reçoit la ligne d'id 6 (Boubou, sud, 180) ?
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