Leçon 1 / 9 — Chapitre 7: Mise en pratique : sport et compétition
Présentation : ROW_NUMBER pour la meilleure performance d'un club
Nouveau secteur pour ce chapitre : un club sportif suit les temps de ses athlètes sur plusieurs éditions d'une compétition. Attention : ici, un temps plus bas est une meilleure performance — l'inverse des exemples précédents du module, où une valeur plus haute (ancienneté, score) était toujours la meilleure.
athletes
id | nom | club
1 | Yasmine | Aigles
2 | Malik | Aigles
3 | Samuel | Requins
4 | Leila | Requins
performances
id | athlete_id | edition | temps_secondes
1 | 1 | 1 | 62
2 | 1 | 2 | 58
3 | 2 | 1 | 66
4 | 2 | 2 | 60
5 | 3 | 1 | 70
6 | 3 | 2 | 66
7 | 4 | 1 | 68
8 | 4 | 2 | 64
SELECT a.nom, a.club, p.edition, p.temps_secondes,
ROW_NUMBER() OVER (PARTITION BY a.club ORDER BY p.temps_secondes ASC) AS rang_club
FROM performances p
JOIN athletes a ON a.id = p.athlete_id;
ORDER BY temps_secondes ASC (et non DESC) place les temps les plus bas en premier — puisqu'ici, plus bas est meilleur. La meilleure performance du club Aigles est celle de Yasmine à l'édition 2 (58 secondes, la plus basse) : elle obtient rang_club = 1.
À retenir :
- Le sens de l'ORDER BY (ASC ou DESC) dépend toujours du sens de la métrique : pour un temps, plus bas est souvent meilleur, contrairement à un score ou une ancienneté.
- Toutes les techniques de ce module restent valables ; seul le sens du tri change selon le contexte métier.
À vous de jouer : quelle est la meilleure performance (le temps le plus bas) du club Requins, et à quelle édition a-t-elle été réalisée ?
À vous de jouer
À faireVoici une table athletes :
athletes
id | nom | club
1 | Yasmine | Aigles
2 | Malik | Aigles
3 | Samuel | Requins
4 | Leila | Requins
Et une table performances (temps en secondes, plus bas = meilleur) :
performances
id | athlete_id | edition | temps_secondes
1 | 1 | 1 | 62
2 | 1 | 2 | 58
3 | 2 | 1 | 66
4 | 2 | 2 | 60
5 | 3 | 1 | 70
6 | 3 | 2 | 66
7 | 4 | 1 | 68
8 | 4 | 2 | 64
Quel est le temps le plus bas (la meilleure performance) du club Requins ?
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Un nombre (en secondes).
À vous de jouer
À faireÀ quelle édition cette meilleure performance des Requins (64 secondes) a-t-elle été réalisée ?
Testez cette requête dans un bac à sable SQL en ligne (SQLite Fiddle, W3Schools "Try SQL", ou tout autre) pour vérifier le résultat avant de répondre.
💡 Un nombre.