Leçon 7 / 9 — Chapitre 7: Mise en pratique : sport et compétition
Isoler la meilleure performance de chaque club avec RANK
Comme au chapitre 2, isoler un rang exige une sous-requête ou une CTE — le même principe s'applique ici, avec un ORDER BY ASC.
SELECT nom, club, edition, temps_secondes
FROM (
SELECT a.nom, a.club, p.edition, p.temps_secondes,
RANK() 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
) AS classement
WHERE rang_club = 1;
Résultat : 2 lignes — Yasmine (Aigles, édition 2, 58 secondes) et Leila (Requins, édition 2, 64 secondes), chacune la meilleure performance de son club. Si deux performances d'un même club avaient été à égalité au temps le plus bas, RANK() les aurait toutes les deux incluses — exactement comme au chapitre 2.
À retenir :
- Le choix entre RANK() et ROW_NUMBER() pour isoler un « meilleur » par groupe (chapitre 2) s'applique de la même façon ici : RANK() n'exclurait jamais injustement un ex-aequo au temps le plus bas.
À vous de jouer : combien de lignes ce résultat contient-il au total ?
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