查询每个学生的各科成绩sql语句
2016-03-22 16:22
786 查看
数据库中有三个表 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
相关文章推荐
- MySQL触发器Trigger实例
- oracle中的游标
- 数据库基础——关系的完整性
- Get SQL run time
- HOSt ip is not allowed to connect to this MySql server
- mysql使用技巧(更新中)
- SQLite性能和限制 多进程
- JDBC连接数据库
- sql 将结果集反系列化为json
- 找工作——数据库
- Mybatis源码概览(一)
- Hibernate防止SQL注入攻击的方法
- GROUP BY,WHERE,HAVING之间的区别和用法
- Android App使用SQLite数据库的一些要点总结
- sql 将结果集系列化为json
- 关于oracle数据库(5)增删改查
- ORACLE ADF11g:VO代码式增删改
- SQLite 相关
- 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器
- Mac OS X 下 TAR.GZ 方式安装 MySQL 5.7(转)