PaliSkill
SQL — Fonctions de fenêtrage

Leçon 1 / 9 — Chapitre 8: Mise en pratique : ventes mensuelles

Présentation : RANK pour le classement mensuel des vendeurs

Nouveau secteur pour ce chapitre : une équipe commerciale suit les ventes mensuelles de ses vendeurs (montants en dollars, plus haut = meilleure performance — comme la plupart des exemples de ce module, à l'inverse du chapitre 7).

vendeurs
id | nom     | region
1  | Fatou   | est
2  | Karim   | est
3  | Solene  | ouest
4  | Tarek   | ouest
ventes_mensuelles
id | vendeur_id | mois | montant
1  | 1          | 1    | 100
2  | 1          | 2    | 150
3  | 1          | 3    | 250
4  | 2          | 1    | 150
5  | 2          | 2    | 150
6  | 2          | 3    | 300
7  | 3          | 1    | 200
8  | 3          | 2    | 300
9  | 3          | 3    | 500
10 | 4          | 1    | 300
11 | 4          | 2    | 300
12 | 4          | 3    | 600
SELECT v.nom, vm.mois, vm.montant,
  RANK() OVER (PARTITION BY vm.mois ORDER BY vm.montant DESC) AS rang_mois
FROM ventes_mensuelles vm
JOIN vendeurs v ON v.id = vm.vendeur_id;

Au mois 1, les montants triés du plus haut au plus bas sont : 300 (Tarek), 200 (Solene), 150 (Karim), 100 (Fatou) — Tarek obtient rang_mois = 1.

À retenir :

  • Ce montage (JOIN entre une table de dimension comme vendeurs et une table de faits comme ventes_mensuelles, puis RANK dessus) est un schéma très courant en analyse commerciale.

À vous de jouer : qui obtient le rang_mois 1 au mois 3 (montants : Fatou 250, Karim 300, Solene 500, Tarek 600) ?

À vous de jouer

À faire

Voici une table vendeurs :

vendeurs
id | nom     | region
1  | Fatou   | est
2  | Karim   | est
3  | Solene  | ouest
4  | Tarek   | ouest

Et une table ventes_mensuelles (montants en dollars, mois 3 : Fatou 250, Karim 300, Solene 500, Tarek 600) :

Avec RANK() OVER (PARTITION BY mois ORDER BY montant DESC) AS rang_mois, qui obtient rang_mois = 1 au mois 3 ?

Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.

💡 Un prénom.

À vous de jouer

À faire

Dans ce même mois 3, quel rang_mois obtient Fatou (250 $, le montant le plus bas) ?

Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.

💡 Un nombre.

Quitter le module