分组函数查询
利用分组函数查询
开发工具与关键技术:PLSQL Developer、Oracle
作者:梁添荣
撰写时间:2019-4-1
记得有到作业题
9.查询所有课程成绩小于60分的同学的学号、姓名
当时我理解为:查询 每个课程成绩都低于60 的同学的学号、姓名
想了半天,都想不出做法,后来查看了答案,才发现,理解错了
可能是倔,又按自己理解的做,并改成是低于81分的
-
查询出所有课程成绩的同学学号、名字,总条数,并按名字、学号分组
select student.sno, sname,count(student.sno) a from sc join student on sc.sno = student.sno
group by sname,student.sno -
查询出所有的课程成绩低于81的同学姓名、学号、总条数并按姓名、学号分组
select sname,count(sc.sno) a from sc join student on sc.sno = student.sno
where score < 81
group by sname -
如果一个同学的所有课程成绩的 总条数 等于 该同学 的课程成绩低于81的 总条数
则该同学的所有课程成绩都低于81
select a.sno,a.sname from (select student.sno, sname,count(student.sno) a from sc join student on sc.sno = student.sno
group by sname,student.sno) a,(select sname,count(sc.sno) a from sc join student on sc.sno = student.sno
where score < 81
group by sname) b
where a.a=b.a and a.sname = b.sname
查出结果为下图
下图为所有同学的课程成绩,只有李四和琴訫的所有课程成绩都低于81
从这道题发现
查询 一个字段 并其别名,再按group by 该字段的别名,是会报错的