PaliSkill
← SQL — Fonctions de fenêtrage

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.