← SQL — Fonctions de fenêtrage
Leçon 9 / 9 — Chapitre 2: Isoler le top N par groupe
Cas pratique : un top inclusif par équipe
Ce cas pratique applique la leçon sur le piège du top-N (leçon 4) à une véritable requête complète, avec RANK() pour ne jamais exclure un ex-aequo.
WITH classement AS (
SELECT nom, equipe, anciennete,
RANK() OVER (PARTITION BY equipe ORDER BY anciennete DESC) AS rang_equipe
FROM employes
)
SELECT nom, equipe, anciennete
FROM classement
WHERE rang_equipe = 1
ORDER BY equipe;
Étape par étape :
- La CTE
classementcalcule unRANK()par équipe. - Dans l'équipe ventes, Amara (5 ans) est seule au rang 1.
- Dans l'équipe support, David et Farid (7 ans chacun) sont tous deux au rang 1 —
RANK()les inclut tous les deux, contrairement à ce qu'aurait faitROW_NUMBER().
Résultat final : 3 lignes — Amara, David, Farid.
À retenir :
- Ce résultat à 3 lignes (au lieu de 2, un par équipe) illustre concrètement le choix assumé de
RANK(): inclure tous les ex-aequo du sommet, quitte à dépasser le nombre d'équipes. - Une CTE nommée (
classement) rend cette logique lisible en une seule fois, réutilisable pour d'autres seuils si nécessaire.
À vous de jouer : Farid apparaît-il dans ce résultat final ? Justifiez à partir de son ancienneté comparée à celle de David.
🔒
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