我的三个表都在这儿了
select Student.学号,姓名,SC.成绩,avg(成绩) as 平均分
from Student,SC
where Student.学号 =SC.学号
group by Student.学号,姓名,SC.成绩
having avg(成绩) >= all (select avg(成绩))
这是我写的代码,但运行出来是这样,并不是要求里显示的平均分最高的学生信息
哪位大佬能帮我看看这个小问题啊,实在想不出来啊
...全文
641721打赏收藏
求助sql server中查询各课程平均成绩最高的学生的姓名、学号和成绩
我的三个表都在这儿了 select Student.学号,姓名,SC.成绩,avg(成绩) as 平均分 from Student,SC where Student.学号 =SC.学号 group by Student.学号,姓名,SC.成绩 having avg(成绩) >= all (select avg(成绩)) 这是我写的代码,但运行出来是这样,并不是要求里显示的平均分最高的学生信息 哪位大佬能帮我看看这个小问题啊,实在想不出来啊
各课程平均成绩最高的学生,这个不是很明白。。。看代码应该是各课程高于平均成绩的学生
SELECT
SC.学号,Student.姓名,成绩,t.平均成绩
FROM SC
LEFT JOIN Student ON Student.学号 = SC.学号
LEFT JOIN (
SELECT
SC.课程号,AVG(成绩) 平均成绩
FROM SC
GROUP BY SC.课程号
) t ON t.课程号 = SC.课程号
WHERE SC.成绩 > t.平均成绩
select Student.学号,姓名,SC.成绩,avg(成绩) as 平均分
from Student,SC
where Student.学号 =SC.学号
group by Student.学号,姓名,SC.成绩
having avg(成绩) >= all (select avg(成绩) from SC group by 学号)
用这个语句能查出来平均分最高的学生学号:select 学号 from SC group by 学号 having avg(成绩) >= all (select avg(成绩) from sc group by 学号)
再关联查一下这个学生的成绩:select Student.学号,姓名,SC.课程,SC.成绩
from Student,SC
where Student.学号 =SC.学号 and SC.学号=(select 学号 from SC group by 学号 having avg(成绩) >= all (select avg(成绩) from sc group by 学号))
如果要求也显示平均成绩:select Student.学号,姓名,SC.课程,SC.成绩,tmpsc.平均成绩
from Student,SC,(select 学号,avg(成绩) 平均成绩 from SC group by 学号 having avg(成绩) >= all (select avg(成绩) from sc group by 学号) ) tmpsc
where Student.学号 =SC.学号 and SC.学号=tmpsc.学号