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 :
- 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. ecart_totalmesure la progression complète, du premier au dernier temps enregistré.- Trier par
ecart_total ASCplace 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