Leçon 8 / 9 — Chapitre 6: Combiner fenêtres, CASE et sous-requêtes
Cas pratique : rang, étiquette et filtre combinés
Ce cas pratique combine trois outils du chapitre : un rang (RANK), une étiquette (CASE) et un filtre sur cette étiquette (sous-requête).
SELECT nom, equipe, anciennete, statut
FROM (
SELECT nom, equipe, anciennete,
CASE
WHEN RANK() OVER (PARTITION BY equipe ORDER BY anciennete DESC) = 1 THEN $q2$senior de l'equipe$q2$
ELSE $q2$autre$q2$
END AS statut
FROM employes
) AS classement
WHERE statut = $q2$senior de l'equipe$q2$
ORDER BY equipe, nom;
Étape par étape :
- La sous-requête
classementcalcule le rang de chaque employé dans son équipe, puis le transforme en étiquettestatutvia CASE. - Le filtre externe
WHERE statut = 'senior de l'equipe'ne garde que les rangs 1 — y compris les ex-aequo.
Résultat final : 3 lignes — Amara (ventes), David et Farid (support, ex-aequo au rang 1). Ce résultat retrouve exactement le même ensemble que la version RANK() directe du chapitre 2, confirmant que l'étiquetage par CASE n'a fait que renommer le même filtre, sans en changer la logique.
À retenir :
- Étiqueter un résultat avec CASE avant de filtrer dessus (plutôt que de filtrer directement sur le rang numérique) rend l'intention de la requête plus lisible, sans changer le résultat final.
À vous de jouer : Farid apparaît-il dans ce résultat ? Justifiez à partir de son rang dans l'équipe support.
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