查询Score表中除了每门课程最高分的学生编号和课程编号

img

[my sql]数据库题:查询Score表中除了每门课程最高分的,学生编号和课程编号

用开窗函数做分组排行,再把第一名剔除就是

select * from (
select t.*,rank() over(partition by cno order by degree desc) rk from score t
) as t2 where rk>1

如果不用开窗函数的话,那就得先写个子查询,得到每个课程的最高分,即课程和分数两个字段,然后再从原表里把对应的课程和分数进行剔除,可以用not in 也可以用not exists ,但这样相当于一张表要查两次,明显不如开窗函数来得优雅

查询最小的再分个组应该就可以了吧