【发布时间】:2020-11-06 15:42:04
【问题描述】:
学分 Leetcode 1112。每个学生的最高分
要求:编写一个 SQL 查询来查找每个学生对应课程的最高成绩。如果出现平局,您应该找到 course_id 最小的课程。输出必须按 student_id 递增排序。
查询结果格式如下例:
Enrollments table:
+------------+-------------------+
| 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 |
为什么这行不通?
select student_id, course_id, grade
from enrollments
group by student_id
having max(grade)
order by student_id
我认为返回应该是 {"headers": ["student_id", "course_id", "grade"], "values": [[1, 2, 99], [2, 2, 95], [ 3, 3, 82]]};但是,实际返回的是 {"headers": ["student_id", "course_id", "grade"], "values": [[1, 1, 90], [2, 2, 95], [3, 1 , 80]]}。
如果有人可以帮助我,非常感谢!
【问题讨论】:
-
这是一个常见问题解答。请在考虑发布之前阅读您的教科书和/或手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。
标签: mysql join group-by subquery greatest-n-per-group