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:Database 95.查找成绩处于中游的学生