专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 报表

SQL测试题 求答案,该怎么处理

发布时间:2010-06-13 14:07:49 文章来源:www.iduyao.cn 采编人员:星星草
SQL测试题 求答案
学生成绩信息三个表,结构如下: 
学生表:Member
字段名称 数据类型 说明
MID Char(10) 学生号,主键
MName Char(50) 姓名
课程表:
字段名称 数据类型 说明
FID Char(10) 课程,主键
FName Char(50) 课程名
成绩表:Score
字段名称 数据类型 说明
SID int 自动编号,主键,成绩记录号
FID Char(10) 课程号,外键
MID Char(10) 学生号,外键
Score int 成绩
请编写T-SQL语句来实现如下功能:
1) 查询各个学生语文、数学、英语、历史课程成绩,例如下表:
姓名 语文 数学 英语 历史
张萨 78 67 89 76
王强 89 67 84 96
李三 70 87 92 56
李四 80 78 97 66
2) 查询四门课中成绩低于70分的学生及相对应课程名和成绩。
3) 统计各个学生参加考试课程的平均分,且按平均分数由高到底排序。
4) 创建存储过程,分别查询参加1、2、3、4门考试及没有参加考试的学生名单,要求显示姓名、学号。

------解决方案--------------------
select Mname as 姓名,语文,数学,英语,历史 from Member a join 
(select MID,sum(语文) as 语文,sum(数学) as 数学,sum(英语) as 英语,sum(历史) as 历史 from 
(select MID,case FName when '语文' then Score else 0 end as 语文,
case FName when '数学' then Score else 0 end as 数学,
case FName when '英语' then Score else 0 end as 英语,
case FName when '历史' then Score else 0 end as 历史 
from (select MID ,FName,Score from score a join 课程表 b on a.FID=b.FID) tb_score
) total group by MID
) tb_all b on a.MID=b.MID
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: