PaliSkill
SQL — Fonctions de fenêtrage

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

À faire

Voici 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.

Quitter le module