我建了两个表,学生档案和学生成绩表,如何用·SQL查询总分和平均分

2024-11-20 12:44:08
推荐回答(4个)
回答1:

一个重要的问题,你不要在sql里写那么多中文,最好没有中文字符!

例:按学号查询(孙三同学的学号为:20101110003)各科成绩,总分,平均分

(在sql查询分析器输入)

select student.Serial as 学号,student.Name as 姓名,
sum(case when Course.Name='语文'then Score.Score else 0 end) as 语文,
sum(case when Course.Name='数学'then Score.Score else 0 end) as 数学,
sum(case when Course.Name='英语'then Score.Score else 0 end) as 英语,
sum(Score.Score)as 总分,(sum(Score.Score)/count(*))as 平均分
from student,Course,Score
where student.Serial=Score.StudentID and Course.Serial=Score.CourseID and student.Serial='20101110003'
group by student.Serial,student.Name

回答2:

select a.学生档案学号, b.姓名, (课程A+B+C+D+E) AS 总分, (课程A+B+C+D+E)/5 AS 平均分
FROM 学生成绩 a left join 学生档案 b on b.学生档案学号=a.学生档案学号
group by a.学生档案学号, b.姓名

这个 完全可以 达到你想要的效果...
我最近也在 学 SQL...嘿...

回答3:

select a.学生档案学号, b.姓名, (课程A+B+C+D+E) AS 总分, (课程A+B+C+D+E)/5 AS 平均分
FROM 学生成绩 a left join 学生档案 b on b.学生档案学号=a.学生档案学号 group by a.学生档案学号, b.姓名

回答4:

select s.id,s.name,(c.a+c.b+c.c) as 'sum',(c.a+c.b+c.c)/3 as 'avg' from student s left join score c on c.stuid=s.id