#10)查询每个学生超过他自己选修课程平均成绩的课程号
这里要先进行分组得到每个学号对应的平均成绩,在用表中的成绩grade与得到的平均成绩一一比较
这里可以进行连表操作,把分组查询得到的结果与原表通过sno学号进行等值连接 ,就在每行的后面跟上其学号所对应的平均成绩。如下图:
最后进行筛选,选出每个学生此课程成绩大于平均成绩的课程 。
最后完整代码:
select s1.cno
from sc s1
join (select sno, avg(grade) avger from sc group by sno) s2 on s1.sno = s2.sno
where s1.grade > s2.avger;