当前位置:文章写作网 >日记 >日记 >Oracle的ROLLUP和CUBE

Oracle的ROLLUP和CUBE

2009-05-21 16:07 作者:tshfang 阅读量:6694 推荐37次 | 我要投稿

/*

Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。

*/

--创建表

create table fzq

(

name varchar(20),

calss varchar(2),

kemu varchar(4),

chengji varchar(3)

)

--插入数据

insert into fzq values

('11','1','数学','90');

insert into fzq values

('11','1','语文','68');

insert into fzq values

('12','1','数学','90');

insert into fzq values

('12','1','语文','88');

insert into fzq values

('22','2','数学','70');

insert into fzq values

('22','2','语文','88');

insert into fzq values

('33','2','数学','95');

insert into fzq values

('33','2','语文','98');

/*

rollup 统计方式效果:

CALSSNAMESUM(CHENGJI)

111158

112178

1336

222158

233193

2351

687

首先是根据calss和name分组求和

然后在根据calss分组求和

最后对全表进行GROUP BY操作求和。

*/

select calss,name,sum(chengji) from fzq

group by rollup(calss,name)

order by calss,name;

/*

CUBE 统计方式效果:

NAMECALSSSUM(CHENGJI)

111158

11158

121178

12178

222158

22158

332193

33193

1336

2351

687

首先是根据name和calss分组求和

然后在根据name分组求和

然后在根据calss分组求和

最后对全表进行GROUP BY操作求和。

*/

select name,calss,sum(chengji) from fzq

group by cube(name,calss)

order by name,calss;

/*

可以调成group by 中name和calss的顺序,

大家看看效果。

*/

其他人在看啥

    《Oracle的ROLLUP和CUBE》的评论 (共 0 条)