sql同时查询学生平均分和课程平均分?

有三个表:学生表student:sno(学号)、sname(姓名)课程表course:cno(课程号)、cname(课程名)成绩表score:cno(课程号)、sno(学... 有三个表:
学生表student:sno(学号)、sname(姓名)
课程表course:cno(课程号)、cname(课程名)
成绩表score:cno(课程号)、sno(学号),degree(成绩)
如何用sql语句查询学生信息,包括学号,姓名,课程号,课程名,成绩以及每位学生的平均分和每门课程的平均分,要求用一个语句完成。
展开
 我来答
敞篷普桑
2020-04-08 · 双星名人集团软件开发工程师
敞篷普桑
采纳数:6 获赞数:3

向TA提问 私信TA
展开全部

话不多说,直接上代码,后面是代码解析

SELECT stu.sname AS 姓名,cou.cname AS 课程名,sco.degree AS 成绩,t3.Avgdegree AS 每人平均分,t4.Avgdegree AS 每门课程平均分
FROM Student stu
INNER JOIN Score sco ON stu.sno = sco.sno
INNER JOIN Course cou ON cou.cno = sco.cno
INNER JOIN 
(
SELECT t1.sno,t1.sname,AVG(t2.degree) AS Avgdegree
FROM Student t1 
INNER JOIN Score t2 ON t1.sno = t2.sno 
GROUP BY t1.sno,t1.sname
) t3 ON stu.sno = t3.sno
INNER JOIN 
(
SELECT cno,AVG(degree) as Avgdegree
FROM score 
GROUP BY cno
) t4 ON sco.cno = t4.cno

代码解析:

  1. 该问题的关键点在于,怎么用一行代码计算出每人的平均分,以及每门课程的平均分

  2. 这时需要用到临时表T3、T4

  3. 临时表T3,用于计算每人平均分

  4. 临时表T4,用于计算每门课程平均分

匿名用户
2020-04-08
展开全部
select s.sname,c.cname,sc1.degree
,(select avg(sc2.degree) from score sc2 where sc2.sno=sc1.sno) avg_sno
,(select avg(sc3.degree) from score sc3 where sc3.cno=sc1.cno) avg_cno
from score sc1 left join student s on sc1.sno=s.sno left join course c on sc1.cno=c.cno
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式