LeetCode:Database 51.每位学生的最高成绩

Posted Xiao Miao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:Database 51.每位学生的最高成绩相关的知识,希望对你有一定的参考价值。

要求:编写一个 SQL 查询,查询每位学生获得的最高成绩和它所对应的科目,若科目成绩并列,取 course_id 最小的一门。查询结果需按 student_id 增序进行排序。

表:Enrollments的结构

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| student_id    | int     |
| course_id     | int     |
| grade         | int     |
+---------------+---------+
(student_id, course_id) 是该表的主键。

Enrollments 表:

+------------+-------------------+
| student_id | course_id | grade |
+------------+-----------+-------+
| 2          | 2         | 95    |
| 2          | 3         | 95    |
| 1          | 1         | 90    |
| 1          | 2         | 99    |
| 3          | 1         | 80    |
| 3          | 2         | 75    |
| 3          | 3         | 82    |
+------------+-----------+-------+

Result Table:

+------------+-------------------+
| student_id | course_id | grade |
+------------+-----------+-------+
| 1          | 2         | 99    |
| 2          | 2         | 95    |
| 3          | 3         | 82    |
+------------+-----------+-------+

SQL语句:

select student_id,course_id,grade from (
select student_id,course_id,grade,row_number() over(partition by student_id order by grade desc,course_id asc) as r
from Enrollments)a 
where r=1 
order by student_id asc;

以上是关于LeetCode:Database 51.每位学生的最高成绩的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 2037. 使每位学生都有座位的最少移动次数

LeetCode(数据库)- 每位学生的最高成绩

LeetCode:Database 86.院系无效的学生

LeetCode:Database 95.查找成绩处于中游的学生

LeetCode:Database 21.统计各专业学生人数

LeetCode:Database 76.学生们参加各科测试的次数