PaliSkill
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 :

  1. La CTE classement calcule un RANK() par équipe.
  2. Dans l'équipe ventes, Amara (5 ans) est seule au rang 1.
  3. 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 fait ROW_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