PaliSkill
SQL — Fonctions de fenêtrage

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