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 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.