PaliSkill
SQL — Fonctions de fenêtrage

Leçon 9 / 9 — Chapitre 7: Mise en pratique : sport et compétition

Cas pratique final : qui a le plus progressé ?

Ce cas pratique combine FIRST_VALUE (leçon 6) et un filtre pour identifier l'athlète le plus progressiste — celui dont l'écart de progression est le plus négatif (le plus grand gain de vitesse).

WITH progression AS (
  SELECT DISTINCT a.nom,
    FIRST_VALUE(p.temps_secondes) OVER w AS temps_edition1,
    LAST_VALUE(p.temps_secondes) OVER w AS temps_dernier,
    LAST_VALUE(p.temps_secondes) OVER w - FIRST_VALUE(p.temps_secondes) OVER w AS ecart_total
  FROM performances p
  JOIN athletes a ON a.id = p.athlete_id
  WINDOW w AS (
    PARTITION BY p.athlete_id ORDER BY p.edition
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
  )
)
SELECT nom, temps_edition1, temps_dernier, ecart_total
FROM progression
ORDER BY ecart_total ASC;

Étape par étape :

  1. La fenêtre nommée w, avec son cadre complet (chapitre 5), rend LAST_VALUE fiable : elle renvoie le vrai dernier temps de chaque athlète, pas la ligne courante.
  2. ecart_total mesure la progression complète, du premier au dernier temps enregistré.
  3. Trier par ecart_total ASC place en premier l'écart le plus négatif — donc le plus grand progrès, puisqu'un temps qui baisse est une amélioration.

Résultats : Yasmine (-4), Samuel (-4), Leila (-4), Malik (-6) — Malik apparaît en tête du tri ASC, avec le plus grand progrès de tous (6 secondes gagnées).

À retenir :

  • Trier par ordre croissant (ASC) une variation où « plus négatif » signifie « meilleur » place naturellement le meilleur résultat en tête — l'inverse de ce qu'on ferait pour une variation où plus positif est meilleur (chapitre 3).
  • Ce cas pratique referme la boucle du chapitre : FIRST_VALUE, LAST_VALUE avec cadre corrigé, fenêtre nommée et tri adapté au sens de la métrique, tous réunis dans une seule requête.

À vous de jouer : qui a le moins progressé (le ecart_total le moins négatif, donc le plus proche de 0) parmi les 4 athlètes ?

🔒

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