PaliSkill
SQL — Fonctions de fenêtrage

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, colonne2 forme une partition par combinaison distincte des deux colonnes, pas par colonne séparément.
  • Deux lignes qui partagent colonne1 mais diffèrent sur colonne2 appartiennent à 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