grouping sets的作用

grouping sets的作用是对cube的子集处理,查了一下发现oracle从9i开始支持grouping sets,但是在10.2.0.1的时侯发现grouping sets还是比较弱的,在我接触的版本中发现从10.2.0.5开始就很完善了[@more@]

cube是对分组字段的所有组合分组,grouping sets是对cube所有组合分钟种子集的分组显示,不同的版本语法也略有差别。

select owner,status ,count(*)
from dba_objects
group by grouping set(owner,status,()|null)

10.2.0.5之前只能是grouping set((owner,status),status,()),后续的版本可以是grouping set(owner,status,null),10.2.0.5之前所有的分组字段必须以整体出现(owner,status),不出现不行,owner不能单独出现,也就是说使用起来有很多局限性,没有真真体现出grouping sets想表达的意义、不完整;10.2.0.5之后完美了。

--============================

下面是11.2.0.1上的测试。

SQL> select owner,status,count(*)
2 from dba_objects
3 group by grouping sets ((owner,status),owner,status,null)
4 ;

OWNER STATUS COUNT(*)
------------------------------ ------- ----------
SYS VALID 8987
XDB VALID 814
OUTLN VALID 9
WMSYS VALID 316
DBSNMP VALID 55
PUBLIC VALID 3399
SYSTEM VALID 524
APPQOSSYS VALID 3
ORACLE_OCM VALID 8
SYS 8987
XDB 814
OUTLN 9
WMSYS 316
DBSNMP 55
PUBLIC 3399
SYSTEM 524
APPQOSSYS 3
ORACLE_OCM 8
VALID 14115
14115

已选择20行。

SQL>
SQL> select *from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/19602/viewspace-1059777/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/19602/viewspace-1059777/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值