SQL练习题求助

disbug 2019-10-26 04:56:49
图片依次是Student,StudentClass,Class三张表,题目如图。想法是查询到一个学号,再查询该学号对应的不同课程号和成绩,又查询每个课程号对应的平均分,将平均分返回对应课程号与学生得分进行比较,判断是都输出该学号下该生的该门成绩。但每查一个人都要查一次某些课程的平均分好像有些多余。
...全文
59 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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 --通过成绩列比平均分列大,来过滤数据

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧