SQL求选修课程在两门以上并且都及格的学生号及总平均分
发布网友
发布时间:2022-04-07 20:01
我来回答
共1个回答
热心网友
时间:2022-04-07 21:30
我只会oracle的写法,其他数据库可能会有所区别,请注意。而且就算这种写法,因为无法实验可能也有些出入,应该需要调试
select 学生号,avg(分数) from table where 分数>=60 group by 学生号 having count(*)>1
分数>60保证及格,这里首先查询的是及格的学生,及格的学生如果count(*)>1,那么他的选课一定是两门或者两门以上(我假定的选课表是一个学生一个课程一行)。不过这里有一个问题,假设一个学生选了三门课程,两门及格一门不及格,那么是不是需要统计,按照你的需求
“两门以上并且都及格”,现在这个语句好像与你的要求不是那么符合。
所以还有一个版本
select table.学生号,avg(table.分数) 平均分 from table,(select 学生号,count(*) 选课数 from table group by 学生号 having 选课数>1)a where table.分数>60 group by 学生号 having table.学生号=a.学生号 and a.选课数=count(*)