oralce sql 中级开发 (3)高级分组

本文介绍了Oracle数据库中高级分组功能的应用,包括ROLLUP、CUBE、GROUPING和GROUPING_ID等关键字的使用方法,并通过实例说明如何进行复杂的数据分组,以提高查询效率。

  oracle在高级分组这一功能中提供了rollup,cube,gouping,grouping_id。

  group by rollup(1,2)可以理解为group by (1,2) union all group by (2)。

  group by cube(1,2)可以理解为group by(1,2) union all group by (1) union all group by (2)。

  grouping(a)如果a是高级分组聚合产生的空则为1.,非空则为0。(先这样记,后面会详细解释)

 grouping_id(a,b) 可以理解为grouping(a)||grouping(b)二进制数。具体为如果01(1),00(0),10(2),11(3)。

具体使用举一个例子,如果想分别用年龄,性别分组,再加上一个详细,

通常是group by (sex) 并上 group by (age)并上不分组,

用高级分组就可以group by cube(sex,age) having grouping_id(sex,age) in (1,2,0)。

高级分组最大的好处就是仅扫描一次表,这在千万级的数据量上能节约一半的资源和时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值