sql同时查询学生平均分和课程平均分?
有三个表:学生表student:sno(学号)、sname(姓名)课程表course:cno(课程号)、cname(课程名)成绩表score:cno(课程号)、sno(学...
有三个表:
学生表student:sno(学号)、sname(姓名)
课程表course:cno(课程号)、cname(课程名)
成绩表score:cno(课程号)、sno(学号),degree(成绩)
如何用sql语句查询学生信息,包括学号,姓名,课程号,课程名,成绩以及每位学生的平均分和每门课程的平均分,要求用一个语句完成。 展开
学生表student:sno(学号)、sname(姓名)
课程表course:cno(课程号)、cname(课程名)
成绩表score:cno(课程号)、sno(学号),degree(成绩)
如何用sql语句查询学生信息,包括学号,姓名,课程号,课程名,成绩以及每位学生的平均分和每门课程的平均分,要求用一个语句完成。 展开
展开全部
话不多说,直接上代码,后面是代码解析
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
代码解析:
该问题的关键点在于,怎么用一行代码计算出每人的平均分,以及每门课程的平均分
这时需要用到临时表T3、T4
临时表T3,用于计算每人平均分
临时表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
,(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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询