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

本文介绍如何从学生成绩表中查询每个专业选学一门以上课程且成绩不是最高分的学生记录。通过使用子查询和聚合函数,找出选修多门课程的学生,并排除各科目最高分的成绩。
摘要由CSDN通过智能技术生成

学生成绩表

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值