Top 5 Average Grade
Description
You’re doing research about academic achievement, and you’re studying one particular group of students at a local university. Find the average grade of the five most successful students in this group.
The information about the students’ grades is stored in a table called students, which has the following attributes:
- student_id: the unique identifier of the student;
- student_name: the name of the student;
- grade: the grade that the student achieved.
The result should be a table with one column average_grade
and one row that contains the average grade of the five students with the highest grades. The answer should be formatted to 2
digits after the decimal point. It is guaranteed that the five most successful students can be uniquely identified.
Example
For the following tables students
student_id | student_name | grade |
---|---|---|
1 | Oliver Smith | 3.2 |
2 | Jacob Bell | 2.9 |
3 | William Thompson | 3.1 |
4 | Sophie Clark | 3.5 |
5 | Daniel Palmer | 3.6 |
6 | Emily Morris | 4.0 |
7 | Zachary Mills | 2.5 |
the output should be
average_grade |
---|
3.48 |
The top 5 grades for this group are 4.0
, 3.6
, 3.5
, 3.2
, and 3.1
, so their sum is equal to 17.4
and 17.4 / 5 = 3.48
.
- [execution time limit] 10 seconds (mysql)
Solution
1
2
3
4
5
6
7
8
9
10
/*Please add ; after each select statement*/
CREATE PROCEDURE top5AverageGrade()
BEGIN
SELECT ROUND(AVG(grade),2) AS average_grade
FROM (
SELECT grade
FROM students
ORDER BY grade DESC
LIMIT 5) t;
END