PaliSkill
SQL — Fonctions de fenêtrage

Leçon 8 / 9 — Chapitre 6: Combiner fenêtres, CASE et sous-requêtes

Cas pratique : rang, étiquette et filtre combinés

Ce cas pratique combine trois outils du chapitre : un rang (RANK), une étiquette (CASE) et un filtre sur cette étiquette (sous-requête).

SELECT nom, equipe, anciennete, statut
FROM (
  SELECT nom, equipe, anciennete,
    CASE
      WHEN RANK() OVER (PARTITION BY equipe ORDER BY anciennete DESC) = 1 THEN $q2$senior de l'equipe$q2$
      ELSE $q2$autre$q2$
    END AS statut
  FROM employes
) AS classement
WHERE statut = $q2$senior de l'equipe$q2$
ORDER BY equipe, nom;

Étape par étape :

  1. La sous-requête classement calcule le rang de chaque employé dans son équipe, puis le transforme en étiquette statut via CASE.
  2. Le filtre externe WHERE statut = 'senior de l'equipe' ne garde que les rangs 1 — y compris les ex-aequo.

Résultat final : 3 lignes — Amara (ventes), David et Farid (support, ex-aequo au rang 1). Ce résultat retrouve exactement le même ensemble que la version RANK() directe du chapitre 2, confirmant que l'étiquetage par CASE n'a fait que renommer le même filtre, sans en changer la logique.

À retenir :

  • Étiqueter un résultat avec CASE avant de filtrer dessus (plutôt que de filtrer directement sur le rang numérique) rend l'intention de la requête plus lisible, sans changer le résultat final.

À vous de jouer : Farid apparaît-il dans ce résultat ? Justifiez à partir de son rang dans l'équipe support.

🔒

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