Leçon 1 / 9 — Chapitre 2: Isoler le top N par groupe
Cas d'usage concret : le membre le plus ancien de chaque équipe
Impossible d'écrire directement WHERE ROW_NUMBER() OVER (...) = 1 : dans l'ordre logique d'exécution d'une requête SQL, WHERE s'applique avant que les fonctions de fenêtrage soient calculées. Il faut donc passer par une sous-requête (ou une CTE) : calculer d'abord le rang, puis filtrer sur ce résultat.
SELECT nom, equipe, anciennete
FROM (
SELECT nom, equipe, anciennete,
ROW_NUMBER() OVER (PARTITION BY equipe ORDER BY anciennete DESC, id ASC) AS rang_equipe
FROM employes
) AS classement
WHERE rang_equipe = 1;
Cette requête isole le membre le plus ancien de chaque équipe : Amara pour ventes, David pour support.
À retenir :
- On ne peut pas filtrer directement sur le résultat d'une fonction de fenêtre dans un WHERE — il faut d'abord la calculer dans une sous-requête, puis filtrer sur ce résultat dans la requête englobante.
- Ce schéma (« calculer un rang par groupe, puis garder rang = 1 ») est le moyen standard d'isoler « le premier de chaque groupe » (le plus ancien, le plus vendu, le plus récent...).
À vous de jouer : modifiez rang_equipe = 1 en rang_equipe = 2 pour obtenir le deuxième plus ancien de chaque équipe.
Continuez ce module
Débloquez les leçons restantes ainsi que l'attestation finale.
8 000 XOF / 12,20 € / 13,29 $
Débloquez les 78 leçons restantes de ce module
Pour vous communiquer où envoyer le paiement.
Moyen de paiement souhaité
Nous vous contactons pour le paiement — activé dès réception.