Encuentra a los 100 mejores estudiantes

Calentamiento · aggregation, joins, sorting

Dadas 3 tablas, students(id, name), courses(id, name), grades(id, course_id, student_id, grade),

encuentra a los 100 mejores estudiantes según su nota media, ordenados de forma descendente por

la nota media. Si varios estudiantes tienen la misma media, ordénalos por nombre de forma

ascendente. Devuelve las columnas (name, average_grade).

Columnas esperadas

name, average_grade

Pistas

Pista 1: una fila por estudiante

Une students con grades mediante students.id = grades.student_id y agrupa con GROUP BY students.id. AVG(grades.grade) da entonces una media por estudiante. SHOW INDEX FROM grades muestra cuáles de esas columnas de unión están indexadas.

Pista 2: el desempate

ORDER BY average_grade DESC, name ASC y después LIMIT 100. Sin la segunda clave de orden, los estudiantes con la misma media salen en un orden arbitrario.