今天给大家分享一下rollup的知识,也会解释一下rollup是什么意思。如果你碰巧解决了你现在面临的问题,不要';别忘了关注这个网站。如果你有不同的看法和意见,请在评论区积极留言,马上进入正题!
Basicsyntaxofsummary/cube.Theusagesyntaxofsummary/cubeisasfollows:
Select[column,]group_function(column).
from?Table
[where?Conditions]
[Groupingby?[Summary/Cube]?group_by_expression]
[HAVINGHAVING_expression];
[Sortby?Column];
Usingaggregations/cubes,必须具备:1。查询语句是一个组函数查询。最常见的有:AVG、求和、最大、最小、计数等。都是分组函数。。2.Rollup/Cube的使用位置在GROUPBY之后。
除了最基本的语法,Oracle'GROUPBY语句还支持ROLLUP和CUBE语句。。如果是按ROLLUP(A,B,C)分组,先(A,B,C),再(A,B),再(A)。最后,对整个表执行GROUPBY操作。
如果是GROUPBYCUBE(A,B,C),首先,(A,B,C)会被GROUPBY,然后依次是(A,B),(A,C),(A)。、(b、c)、(b)、(c),最后对整个表执行GROUPBY操作。Grouping_id()可以美化效果。
除了使用分组功能还可以使用GROUPING_ID来标识GROUPBY的结果。也可以按Rollup(A,(B,C))分组,按Rollup(B,C)分组。
扩展数据
汇总:按A分组,B会对A和B出现的每一种可能性进行分组。而GROUPBYROLLUP(A,B)会把A和B的每一种可能性都分组,A的每一种可能性都会分组。最后,计算所有的情况。
例如,
rollup(a,b)包括:(a,b),(a),()
rollup(a,b,c)包括:(a,
立方体:类似于ROLLUP,GROUPBYCUBE(A,B)会对A和B的每一种可能性,A的每一种可能性,B的每一种可能性进行分组,最后计算所有情况。
Oracle提供了GROUPING、GROUPING_ID和GROUP_ID三个函数,解决了引入ROLLUP和CUBE后无法区分summary和NULL值的问题。
forexample:Cube(a,b)includes:(a,b),(a),(b),(a)?Cube(a,b,c)includes:(a,b,c),(a,b),(a,c),(b,c),(a),(b),(c)and(xy002).
rollup和CUBE的用法是什么?
?除了最基本的语法,Oracle'GROUPBY语句还支持ROLLUP和CUBE语句。。如果它';s分组依据?如果你ROLLUP(A,B,C),你会先按(A,B,C)分组,再按(A,B)分组,再按(A)分组。最后,对整个表执行GROUPBY操作。
如果是GROUPBYCUBE(A,B,C),首先,(A,B,C)会被GROUPBY,然后依次是(A,B),(A,C),(A)。、(b、c)、(b)、(c),最后对整个表执行GROUPBY操作。Grouping_id()可以美化效果。除了使用GROUPING函数之外,还可以使用GROUPING_ID来标识GROUPBY的结果。
还可以按Rollup(A,(B,C))分组,按A分组?Rollup(B,C),把统计数据组合成你想要的任何形式都非常方便。
Rollup():分组函数可以理解为groupby的简化模式,具体分组模式如下:
Rollup(a,b,c):(a,b),(a),(全表)
。Cube():分组函数也是基于groupby,具体分组方式如下:
Cube(a,b,c):(a,b,c),(a,b),(a,c),(b,c),(c)。
准备下面的数据,比较两个函数的区别:
1。准备资料:
2。使用rollup函数查询
。selectgroup_id,job,name,sum(salary)fromGROUP_TESTGROUPbyrollup(GROUP_id,job,name);
3、使用立方函数:
selectgroup_id,job,name,sum(salary)fromGROUP_TESTGROUPbycube(GROUP_id,job,name)
4。比较:上一次查询的数据项数量要少得多。让';让我们来看一下将两个函数从转换为相应的组函数语句:
rollup函数:
。selectgroup_id,job,name,sum(salary)fromGROUP_TESTGROUPbyrollup(GROUP_id,job,name);
等价于:
selectgroup_id,job,name,sum(salary)fromGROUP_TESTGROUPbyGROUP_id,job,name
unionall
selectGROUP_id,job,null,sum(salary)fromGROUP_TESTGROUPbyGROUP_id,job
unionall
selectGROUP_id,null,null,sum(salary)fromGROUP_TESTGROUPbyGROUP_id
unionall
selectnull,null,null,sum(salary)fromGROUP_TEST
多维数据集函数:
selectgroup_id,job,name,sum(salary)fromGROUP_TESTGROUPbycube(GROUP_id,job,name);
等价于:
selectgroup_id,job,name,sum(salary)fromGROUP_TESTGROUPbyGROUP_id,job,name
unionall
selectGROUP_id,job,null,sum(salary)fromGROUP_TESTGROUPbyGROUP_id,job
unionall
selectGROUP_id,null,name,sum(salary)fromGROUP_TESTGROUPbyGROUP_id,name
unionall
selectGROUP_id,null,null,sum(salary)fromGROUP_TESTGROUPbyGROUP_id
unionall
selectnull,job,name,sum(薪金)fromGROUP_TESTGROUPbyjob,name
unionall
selectnull,job,null,sum(salary)fromGROUP_TESTGROUPbyjob
unionall
selectnull,null,name,sum(salary)fromGROUP_TESTGROUPbyname
unionall
selectnull,null,null,sum(salary)fromgroup_test
5。可以看出,这两个函数对于汇总统计来说比普通函数要好得多。还有一个匹配函数
分组(**):当**字段为空时,取值为1,当**字段不为空时,取值为0;
从GROUP_TESTGROUPbyrollup(GROUP_id,job,name)中选择GROUP(GROUP_id),job,name,sum(salary);
6。添加一列以直观地显示所有摘要字段:
选择group_ID,job,name,
。?Whathappenswhennameisemptyandnvl(group_id,0)=0andjobisempty?"Then"FullTablePolymerization
?Whenthenameisemptyandnvl(group_id,0)=0andthejobisnotempty,then"jobaggregation
"?Whenthenameisemptyand.Grouping(group_id)=0,andthejobisempty,then"GROUPIDAggregation
?Whennameisnotemptyandnvl(group_id,0)=0andjobisempty?"Then"nameaggregation
?Whenthenameisnotemptyandthegroup(group_id)=0andthejobisempty?Then"GROPName"ispolymerized
?Whenthenameisnotemptyandthegroup(group_id)=1andthejobisnotempty?Then"jobname"isaggregated
?Whenthenameis.Isnullandgroup(group_id)=0andjobisnotnull?Then"groupjob"aggregates
?else
?'三列汇总end,
sum(salary)fromGROUP_TESTGROUPbycube(GROUP_id,job,name);
rollup
n.
几种推广;卷曲;卷曲上升;
[Example]CannotrunSQLqueryoncubewithcustomsummaryformula.
无法使用用户定义的汇总公式对多维数据集执行sql查询
第一版汇总源代码只有1000行左右。
_ollup使用两个库:acorn和magic-string。。为了更好地阅读汇总源代码,您必须对它们有所了解。
_corn是一个JavaScript解析器,它将JavaScript字符串解析成语法抽象树AST。。magic-string
_agic-string也是rollup作者写的一个关于字符串操作的库。
相信在小编介绍了rollup和rollup是什么意思之后。你对rollup了解的更透彻。感谢大家的支持和关注!