武汉危货半挂司机招聘:sql查询的一个小题目

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/06 15:43:07
有一个s_c(sno,cno,grade)表,sno学号,cno课程号,grade成绩
要查询成绩大于该课程平均成绩的学生的sno,cno,grade,avg(grade)
最后一项为该课程的平均成绩。
想了好久都写不出来,老通不过,麻烦高手讲解一下!
平均分要按cno课程号分组,即选的同学他应该有课程的成绩大于该课程的平均分

大于分组的平均分:
select sno,cno,grade from s_c where grade > (select Avg(grade) from s_c as a where s_c.cno=a.cno) order by cno;

大于所有的平均分:

select sno,cno,grade from s_c where grade > (select Avg(grade) from s_c) order by cno;

用关联子查询!

declare @grade numeric(4,2),@cno int
set @cno=课程号
set @grade=(select avg(grade) from s_c where cno=@cno)
select * form s_c where grade>@grade and cno=@cno

select sno,cno,grade,grade,AvgGrade=avg(grade)
from s_c
where grade>avg(grade)