SQL练习题求助

disbug 2019-10-26 04:56:49
图片依次是Student,StudentClass,Class三张表,题目如图。想法是查询到一个学号,再查询该学号对应的不同课程号和成绩,又查询每个课程号对应的平均分,将平均分返回对应课程号与学生得分进行比较,判断是都输出该学号下该生的该门成绩。但每查一个人都要查一次某些课程的平均分好像有些多余。
...全文
37 2 点赞 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
最后where写错了, where convert(float,sc.grade)>gra.avgGrae
  • 打赏
  • 举报
回复
1.先查出每个课程的平均分

select convert(float, sum(grade))/convert(float,count(grade)) as avgGrae,cno from studentclass group by cno
2.想办法吧这个结果加到select语句中

select s.sno,s.sname,c.cname,sc.grade from student s
inner join 
studentclass sc on s.sno=sc.sno
inner join 
class c on sc.cno=c.cno --到此为止是获取所有的数据,然后再连接查出的平均分
inner join
(select convert(float, sum(grade))/convert(float,count(grade)) as avgGrae,cno from #studentclass group by cno) gra
	on sc.cno=gra.cno
where convert(float,sc.cno)>gra.avgGrae --通过成绩列比平均分列大,来过滤数据
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2019-10-26 04:56
社区公告
暂无公告