Cours

SQL Défi final

Le classement de la promo

Une jointure, un calcul par groupe, un filtre sur les groupes et un tri : la requête complète.

30 min

Ce défi utilise les tables eleves et notes de la base d'exemple. La table notes contient l'eleve_id de l'élève, la matière et la note. Pense à l'ordre des mots : SELECT … FROM … JOIN … GROUP BY … HAVING … ORDER BY.

Le défi

Écris une requête qui affiche, pour chaque élève qui a au moins 2 notes :

  • son prénom ;
  • sa moyenne, dans une colonne nommée moyenne ;

du meilleur au moins bon.

requete.sql
Résultat

Écris une requête : elle s'exécute pendant que tu tapes, sur une base d'exemple qui repart de zéro à chaque fois.

Voir les tables de la base d'exemple

classes (3 lignes)

idnom
1BTS SIO 1
2BTS SIO 2
3Terminale STMG

eleves (7 lignes)

idprenomnomagevilleclasse_id
1LéaMartin18Chartres1
2TomBernard19Dreux2
3InèsPetit18Chartres1
4HugoDurand20Paris2
5ChloéLambert17Lucé3
6NathanDubois19Chartres1
7SarahMoreau18DreuxNULL

notes (9 lignes)

ideleve_idmatierenote
11Développement16
21Réseau12
32Développement11
42Réseau15
53Développement18
64Réseau9
76Développement13
86Réseau14
95Gestion15
  • La requête s'exécute sans erreur
  • Elle relie eleves et notes avec un JOIN
  • Elle calcule la moyenne avec AVG, nommée moyenne
  • Elle garde seulement les élèves qui ont au moins 2 notes
  • Le résultat est le bon classement, dans le bon ordre
Bloqué ? Voir une solution
SELECT e.prenom, AVG(n.note) AS moyenne
FROM eleves e
JOIN notes n ON n.eleve_id = e.id
GROUP BY e.prenom
HAVING COUNT(*) >= 2
ORDER BY moyenne DESC;