[SQL ] 找出每个科目最高成绩的学生名及成绩

楼主: paranoia5201 (迈向研究生)   2019-10-21 00:04:27
数据库名称:无
数据库版本:无
内容/问题描述:(这是一个考题)
有一张成绩表为score,其中有三个字段:课程名称cno,学生代号sno,修课成绩degree。
如何取出各科目最高成绩之学生代码及修课成绩?
简单的想法:
(select cno, sno, max(degree) from score group by cno)
上述结果我不确定sno会是对应出最高分数的学生名吗?
另一个想法:(未完成)
select * from score order by cno, degree
将成绩表以科目与分数排列后,试图捉出每个科目的最后一栏,
但是就不知道怎么选出每个科目的最后一栏了......
各科目依照成绩排列后的最后一栏,很明显就是最高成绩的学生了。
两个写法不晓得是否正确操作,由于这是考题所以无法实作。
还请各位指导,感谢~
作者: konkonchou (卡卡猫)   2019-10-21 00:53:00
先做一个查询取出各科及对应最高成绩, 再join原成绩表
作者: beckhamert (小黑鱼)   2019-11-26 14:56:00
RANK() OVER Partition by CNO order by degree 在找Rank=1即可 这样应该可以ORDER BY记得加DESC

Links booklink

Contact Us: admin [ a t ] ucptt.com