暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Oracle的rollup、cube、grouping sets函数.pdf
67
5页
0次
2024-01-24
免费下载
Oracle rollup、cube、grouping sets 函数
Oracle group by 除了基本用法以外还有 3 种扩展用法,分别 rollupcubegrouping sets
1 rollup
假设有一个表 test,有 ABCDE5 列。
如果使用 group by rollup(A,B,C)首先会对(ABC)进行 GROUP BY然后对(AB)进行 GROUP
BY,然后是(A)进行 GROUP BY最后对全表进行 GROUP BY 操作。roll up 的意思是“卷起”,
group by rollup 少一
grouping 直到所有列都去掉后的 grouping(也就是全表 grouping)对于 n 个参数的 rollup
n+1 次的 grouping。以下 2 sql 的结果集是一样的
Select A,B,C,sum(E) from test group by rollup(A,B,C)
Select A,B,C,sum(E) from test group by A,B,C
union all
Select A,B,null,sum(E) from test group by A,B
union all
Select A,null,null,sum(E) from test group by A
union all
Select null,null,null,sum(E) from test
2 cube
cube cube grouping
grouping 有维 grouping n
个参数的 cube,有 2^n 次的 grouping。如果使 group by cube(A,B,C),,则首先会对(AB
C)进行 GROUP BY然后依次是(AB)(AC)(A)(BC)(B)(C)最后对全表进 GROUP
BY 操作共是 2^3=8 grouping。同 rollup 一样也可基本 group by 果集
union all 写出一个 group by cube 结果集相同的 sql
Select A,B,C,sum(E) from test group by cube(A,B,C);
Select A,B,C,sum(E) from test group by A,B,C
union all
Select A,B,null,sum(E) from test group by A,B
union all
Select A,null,C,sum(E) from test group by A,C
union all
Select A,null,null,sum(E) from test group by A
union all
Select null,B,C,sum(E) from test group by B,C
union all
Select null,B,null,sum(E) from test group by B
union all
Select null,null,C,sum(E) from test group by C
union all
Select null,null,null,sum(E) from test;
3 grouping sets
grouping sets 就是对参数中的每个参数做 grouping也就是有几个参数做几次 grouping,例如
使用 group by grouping sets(A,B,C)则对(A),(B),(C)进行 group by如果使用 group by grouping
sets((A,B),C),则对(A,B),(C)进行 group by。甚至 grouping by grouping set(A,A)都是语法允许的,
也就是对(A)进行 2 group by,grouping sets 的参数允许重
4 总结
rollup (N+1 个分组方案)
of 5
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜