【发布时间】:2021-03-27 14:51:55
【问题描述】:
我们需要编写一个查询,将所有在他们学习的课程中成绩最高的学生的student_id `s 带入 - 换句话说,它将返回每门课程中最好的学生。
约束:查询必须有子查询
一开始我是这么写的
select student_id
from Student s
where s.course_id in
(select course_id, max(grade) from course c, grade g
where g.course_id = c.course_id
group by course_id)
但我认为它不会起作用,因为子查询只会返回所有课程的最高成绩。 所以我已经尝试过了,但我不确定它是否会起作用。
select student_id
from Student s
where s.course_id in
(select course_id from grade g1
where g1.grade = (select max(grade) from grade g where g.course_id = s.course_id)
如果有人能给我关于使用子查询的任何提示,我将不胜感激
【问题讨论】:
标签: sql subquery inner-join aggregate-functions greatest-n-per-group