查询每个学生的各科成绩sql语句

数据库中有三个表 Student , Course, Grade 分别表示 学生, 课程,成绩
表的结构如下:  Student( studentId, name, sex)  分别表示: 学号,姓名, 性别
                         Course ( cid , cname)  分别表示: 课程号,课程名
                       Grade ( gid, studentId , cid, score) 分别表示: 成绩编号, 学号, 课程号, 成绩
 
现在要查询每个学生的各科成绩和平均分
查询结果打印出的样式如下:
 
序号        姓名         性别            语文          数学         英语         哲学            平均成绩
1             王五         男                80            70             80            90                 80
2             李明         女               90             70              70           80                77.5
 
列名 语文, 数学,   英语, 哲学 是 Course 中的课程名, 查询出的样式一定要与上面的一样,(假设 Course 表中 cname 只有四个  语文, 数学, 英语, 哲学)
select a.studentId,a.name,a.sex,c.cid,b.cname,c.score
 into TableA
 from Student a, Course b, Grade c
 where a.studentId=c.studentId and c.cid=b.cid
 
select a.studentId,a.name,a.sex,
sum(case cname when "语文" then score else 0 end) as 语文,
sum(case cname when "数学" then score else 0 end) as 数学,
sum(case cname when "英语" then score else 0 end) as 英语,
sum(case cname when "哲学" then score else 0 end) as 哲学,
sum(score)*1.0/4 as "平均成绩"
from TableA
group by name

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值