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 ?

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que l'attestation finale.

8 000 XOF / 12,20 € / 13,29 $

Débloquez les 78 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.