Trouvez les 100 meilleurs étudiants
Échauffement · aggregation, joins, sorting
Étant données 3 tables, students(id, name), courses(id, name), grades(id, course_id, student_id, grade),
trouvez les 100 meilleurs étudiants selon leur moyenne, triés par moyenne décroissante. Si
plusieurs étudiants ont la même moyenne, triez-les par nom croissant. Renvoyez les colonnes
(name, average_grade).
Colonnes attendues
name, average_grade
Indices
Indice 1 : une ligne par étudiant
Joignez students à grades avec students.id = grades.student_id et regroupez avec GROUP BY students.id. AVG(grades.grade) donne alors une moyenne par étudiant. SHOW INDEX FROM grades montre lesquelles de ces colonnes de jointure sont indexées.
Indice 2 : le départage
ORDER BY average_grade DESC, name ASC, puis LIMIT 100. Sans la seconde clé de tri, les étudiants à moyenne égale reviennent dans un ordre arbitraire.