Leçon 6 / 9 — Chapitre 2: Isoler le top N par groupe
Sous-requête ou CTE pour isoler un rang : lequel préférer ?
Une CTE (vue dans le module SQL Intermédiaire) produit exactement le même résultat qu'une sous-requête en FROM, pour isoler un rang — la différence est purement une question de lisibilité.
WITH classement AS (
SELECT nom, equipe,
ROW_NUMBER() OVER (PARTITION BY equipe ORDER BY anciennete DESC, id ASC) AS rang_equipe
FROM employes
)
SELECT nom, equipe FROM classement WHERE rang_equipe = 1;
Ce résultat est identique à celui de la première leçon de ce chapitre (Amara, David), mais la CTE classement peut être référencée plusieurs fois sans recalculer ROW_NUMBER() — utile pour extraire à la fois rang_equipe = 1 et rang_equipe = 2 dans une même requête, par exemple avec un UNION entre deux SELECT sur cette même CTE.
À retenir :
- Sous-requête en FROM et CTE produisent un résultat identique pour isoler un rang : le choix est une question de lisibilité, pas de comportement.
- Une CTE référencée plusieurs fois évite de recalculer la fonction de fenêtre à chaque usage — un avantage concret dès que plusieurs seuils de rang sont nécessaires dans la même requête.
À vous de jouer : cette même CTE classement pourrait-elle être réutilisée pour extraire à la fois rang_equipe = 1 et rang_equipe = 2, sans recalculer ROW_NUMBER deux fois ?
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