最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle分组函数rollup,cube

来源:动视网 责编:小采 时间:2020-11-09 12:44:46
文档

Oracle分组函数rollup,cube

Oracle分组函数rollup,cube:rollup(字段1,字段2): cube(字段1,字段2): rollup(col1, col2...) 和 cube(col1, col2...) 用法区别在 cube 在 rollup(字段1,字段2): cube(字段1,字段2): rollup(col1, col2...) 和 cube(col1, col2...
推荐度:
导读Oracle分组函数rollup,cube:rollup(字段1,字段2): cube(字段1,字段2): rollup(col1, col2...) 和 cube(col1, col2...) 用法区别在 cube 在 rollup(字段1,字段2): cube(字段1,字段2): rollup(col1, col2...) 和 cube(col1, col2...


rollup(字段1,字段2): cube(字段1,字段2): rollup(col1, col2,...) 和 cube(col1, col2,...) 用法区别在 cube 在

rollup(字段1,字段2):

cube(字段1,字段2):

rollup(col1, col2,...) 和 cube(col1, col2,...) 用法区别在 cube 在 rollup 汇总的记录集上,还会增加对 col2 等字段的汇总;

ROLLUP只对第一个参数(字段)进行汇总,CUBE可以对参数(字段)依次汇总,所以ROLLUP中参数个数只有一个会起作用(且排名在前的参数)。

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

ROLLUP(A, B, C):

首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。

CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。

CUBE 和 ROLLUP 之间的区别在于:

CUBE 生成的结果集显示了所选列中值的所有组合的聚合。

ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。

例子:

create table student(
cgrade varchar2(64),
cclass varchar2(64),
cgroup varchar2(64),
stu int
)

insert into student(cgrade,cclass,cgroup,stu) values('1','1','1',10);
insert into student(cgrade,cclass,cgroup,stu) values('1','2','1',10);
insert into student(cgrade,cclass,cgroup,stu) values('1','2','2',20);
insert into student(cgrade,cclass,cgroup,stu) values('2','1','1',30);
insert into student(cgrade,cclass,cgroup,stu) values('2','2','2',40);

select * from student;

select cgrade,cclass,sum(stu) from student group by cgrade,cclass;

select cgrade,cclass,sum(stu) from student group by cube(cgrade,cclass);

select decode(grouping(cgrade),1,'学校人数',0,cgrade),decode(grouping(cclass)+grouping(cgrade),1,'年级人数',0,cclass),sum(stu) from student group by rollup(cgrade,cclass);

文档

Oracle分组函数rollup,cube

Oracle分组函数rollup,cube:rollup(字段1,字段2): cube(字段1,字段2): rollup(col1, col2...) 和 cube(col1, col2...) 用法区别在 cube 在 rollup(字段1,字段2): cube(字段1,字段2): rollup(col1, col2...) 和 cube(col1, col2...
推荐度:
标签: 分组 函数 oracle
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top