PaliSkill
SQL — Fonctions de fenêtrage

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

Cas pratique final : les meilleurs vendeurs finissant en force

Ce cas pratique final combine un classement sur total agrégé (leçon 4) et une part de mois (leçon 3), pour répondre à une vraie question métier : quels sont les meilleurs vendeurs du trimestre, ET dont le dernier mois représente au moins la moitié de leur chiffre d'affaires ?

WITH totaux AS (
  SELECT vendeur_id, SUM(montant) AS total_trimestre
  FROM ventes_mensuelles
  GROUP BY vendeur_id
),
classement AS (
  SELECT t.vendeur_id, t.total_trimestre,
    RANK() OVER (ORDER BY t.total_trimestre DESC) AS rang_general
  FROM totaux t
),
dernier_mois AS (
  SELECT vendeur_id, montant AS montant_mois3
  FROM ventes_mensuelles
  WHERE mois = 3
)
SELECT v.nom, c.total_trimestre, c.rang_general,
  ROUND(100.0 * d.montant_mois3 / c.total_trimestre, 0) AS part_mois3
FROM classement c
JOIN dernier_mois d ON d.vendeur_id = c.vendeur_id
JOIN vendeurs v ON v.id = c.vendeur_id
WHERE c.rang_general <= 2 AND (100.0 * d.montant_mois3 / c.total_trimestre) >= 50
ORDER BY c.rang_general;

Étape par étape :

  1. totaux agrège le chiffre d'affaires trimestriel par vendeur (GROUP BY classique).
  2. classement applique RANK() sur ce résultat agrégé (leçon 4).
  3. dernier_mois isole le montant du mois 3 pour chaque vendeur.
  4. Le filtre final ne garde que les 2 meilleurs vendeurs (rang_general <= 2) dont le mois 3 représente au moins 50 % de leur total.

Résultat : Tarek (rang 1, mois 3 = 600/1200 = 50 %) et Solene (rang 2, mois 3 = 500/1000 = 50 %) — les deux top vendeurs remplissent exactement ce critère.

À retenir :

  • Ce cas pratique enchaîne trois CTE successives (agrégation, classement, isolement d'une colonne), chacune réutilisant le résultat de la précédente — une architecture lisible pour des questions métier à plusieurs critères.

À vous de jouer : combien de lignes ce résultat final contient-il ?

🔒

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