ORACLE中一个SQL语句实现横向汇总和纵向汇总(求每个学生的总成绩,每学科总成绩和全班总成绩)
2008-10-20 21:10
441 查看
有一张表test 如下, (NO 学生编号 ,cj 成绩)
NO name KM CJ
001 张三 语文 80
001 张三 数学 86
001 张三 英语 75
002 李四 语文 78
002 李四 数学 85
002 李四 英语 78
写了以下语句来算每项个科目的总分,
select decode(grouping(name),1,'总分',name) 姓名,
sum(decode(km, '数学',cj,0)) 数学,
sum(decode(km, '英语',cj,0)) 英语,
sum(decode(km, '语文',cj,0)) 语文,
sum(cj) 总成绩
from test group by rollup(name)
结果如下:
姓名 数学 英语 语文 总成绩
李四 85 78 78 241
张三 86 75 80 241
总分 171 153 158 482
NO name KM CJ
001 张三 语文 80
001 张三 数学 86
001 张三 英语 75
002 李四 语文 78
002 李四 数学 85
002 李四 英语 78
写了以下语句来算每项个科目的总分,
select decode(grouping(name),1,'总分',name) 姓名,
sum(decode(km, '数学',cj,0)) 数学,
sum(decode(km, '英语',cj,0)) 英语,
sum(decode(km, '语文',cj,0)) 语文,
sum(cj) 总成绩
from test group by rollup(name)
结果如下:
姓名 数学 英语 语文 总成绩
李四 85 78 78 241
张三 86 75 80 241
总分 171 153 158 482
相关文章推荐
- 转 一个题目涉及到的50个Sql语句(学生成绩)
- 只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名
- 一个sql语句的编写 写出不及格门数大于等于2的学生的姓名和平均成绩
- 查询每个学生的各科成绩sql语句
- sql查询每个学生的最高成绩mysql语句
- Oracle开发之SQL语句案例—学生成绩统计
- 给定一个一oracle建表的sql语句,解析读出的字符串,将表名、字段名、字段类型数据取出,怎么实现啊?
- 收藏一个简单sql语句实现多查询的方法
- 有五个学生,每个学生有3门课(语文、数学、英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩)
- 利用oracle的with语句和动态sql,自动产生用交叉表格式显示的汇总语句
- 设计一个学生类,其中包含学号、姓名、成绩等数据成员,创建学生对象并且倒入到文件file.txt,然后由文件读取到另一个学生对象并输出,试编程实现。
- (2)SQL语句实现表的横向聚合
- oracle:两条sql语句实现层次查询的反序权值计算与输出
- Oracle中实现分页的SQL语句
- sql语句实现一个输入框下多条件查询
- 学生表 课程表 成绩表 教师表 50个常用sql语句
- Oracle维护常用SQL语句汇总
- oracle下巧用bulk collect实现cursor批量fetch的sql语句
- 实现数据分类汇总的SQL语句
- oracle问题:新建了一个PDM文件,建表后生成的sql语句中含有clustered