暂无图片
有一张学生成绩表 Scores,包含 student_id, course, score 三个字段。如何用一条 SQL 查询找出每个课程中分数最高的学生?
我来答
分享
暂无图片 匿名用户
有一张学生成绩表 Scores,包含 student_id, course, score 三个字段。如何用一条 SQL 查询找出每个课程中分数最高的学生?
暂无图片 100M

有一张学生成绩表 Scores,包含 student_idcoursescore 三个字段。如何用一条 SQL 查询找出每个课程中分数最高的学生?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
刘艳兵

用窗口函数:

SELECT course, student_id, score
FROM (
    SELECT *, RANK() OVER (PARTITION BY course ORDER BY score DESC) AS rank
    FROM Scores
) t
WHERE rank = 1;
暂无图片 评论
暂无图片 有用 4
夜的第七章灬

oracle,mysql通用语法:

SELECT b.course, b.score, a.student_id
FROM Scores a INNER JOIN (SELECT course,MAX(score) AS maxscore FROM Scores GROUP BY course) b ON a.course=b.course AND a.score=b.maxscore;

暂无图片 评论
暂无图片 有用 1
beryl.lv

select * from (select student_id,course,score,rank () over (partition by score) as ranking from scores) where ranking=1;

暂无图片 评论
暂无图片 有用 0
小铜人

SELECT s.course, s.student_id, s.score
FROM Scores s
INNER JOIN (
SELECT course, MAX(score) AS max_score
FROM Scores
GROUP BY course
) AS max_scores
ON s.course = max_scores.course AND s.score = max_scores.max_score;

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏