学生成绩表
sno 学生编号 cno 专业课程号 degrees成绩
今天遇到一个问题 要求查询表中的各个专业非最高分的同学的成绩
找了很多资料 找到了一些解法 但是感觉不好理解
select * from score a where sno in (select sno from score group by sno having count(*)>1) --查找到选学一门科目以上的人的学号
and
(degrees not in
(select max(degrees) from score b where a.cno=b.cno group by cno))--
没能很好的理解最后的过滤条件
后来我想查出最高分的学生学号/专业号/成绩 然后用not in否掉
所有衍生出
查询成绩表中不同科目的最高分的学生号/分数/科目
select * from score s jion (select cno,max(degrees ) degrees from score group by cno ) sc on (sc.degrees=s.degrees and sc.cno=s.cno);