您的位置:首页 > 其它

查询score中选学一门以上课程的同学中分数为非最高分成绩的记录

2016-01-13 23:51 996 查看


学生成绩表

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);



否掉后发现剩下的并不符合要求  结果如下



由于是靠学号否定的 所有各科成绩全部否掉了


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: