利用分组函数查询

开发工具与关键技术:PLSQL Developer、Oracle
作者:梁添荣
撰写时间:2019-4-1

记得有到作业题
9.查询所有课程成绩小于60分的同学的学号、姓名
当时我理解为:查询 每个课程成绩都低于60 的同学的学号、姓名
想了半天,都想不出做法,后来查看了答案,才发现,理解错了
可能是倔,又按自己理解的做,并改成是低于81分的

  1. 查询出所有课程成绩的同学学号、名字,总条数,并按名字、学号分组
    select student.sno, sname,count(student.sno) a from sc join student on sc.sno = student.sno
    group by sname,student.sno

  2. 查询出所有的课程成绩低于81的同学姓名、学号、总条数并按姓名、学号分组
    select sname,count(sc.sno) a from sc join student on sc.sno = student.sno
    where score < 81
    group by sname

  3. 如果一个同学的所有课程成绩的 总条数 等于 该同学 的课程成绩低于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 该字段的别名,是会报错的

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-07
  • 2021-06-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-08
  • 2021-10-13
  • 2020-10-30
  • 2021-05-14
  • 2021-08-14
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案