Leçon 1 / 9 — Chapitre 9: Mise en pratique : résultats académiques
Présentation : RANK pour le classement d'une session d'examen
Dernier secteur de ce module : le suivi des notes d'étudiants sur plusieurs sessions d'examen (notes sur 20, plus haut = meilleur).
etudiants
id | nom | filiere
1 | Amina | info
2 | Bruno | info
3 | Chiara | gestion
4 | Driss | gestion
notes_examens
id | etudiant_id | session | note
1 | 1 | 1 | 12
2 | 1 | 2 | 14
3 | 1 | 3 | 16
4 | 2 | 1 | 10
5 | 2 | 2 | 12
6 | 2 | 3 | 14
7 | 3 | 1 | 15
8 | 3 | 2 | 15
9 | 3 | 3 | 18
10 | 4 | 1 | 11
11 | 4 | 2 | 13
12 | 4 | 3 | 15
SELECT e.nom, n.session, n.note,
RANK() OVER (PARTITION BY n.session ORDER BY n.note DESC) AS rang_session
FROM notes_examens n
JOIN etudiants e ON e.id = n.etudiant_id;
À la session 1, les notes triées de la plus haute à la plus basse sont : 15 (Chiara), 12 (Amina), 11 (Driss), 10 (Bruno) — Chiara obtient rang_session = 1.
À retenir :
- Ce chapitre final revisite l'ensemble des techniques du module (RANK, PERCENT_RANK, LAG, AVG cumulé, FIRST_VALUE/LAST_VALUE, NTILE, CASE) sur un nouveau secteur, sans en introduire de nouvelles.
À vous de jouer : quel rang_session obtient Driss à la session 1 (note 11) ?
À vous de jouer
À faireVoici une table etudiants :
etudiants
id | nom | filiere
1 | Amina | info
2 | Bruno | info
3 | Chiara | gestion
4 | Driss | gestion
Et une table notes_examens (notes sur 20, session 1 : Amina 12, Bruno 10, Chiara 15, Driss 11) :
Avec RANK() OVER (PARTITION BY session ORDER BY note DESC) AS rang_session, quel rang_session obtient Driss à la session 1 ?
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.
À vous de jouer
À faireDans ce même classement de la session 1, qui obtient rang_session = 1 ?
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 prénom.