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)。
高级分组最大的好处就是仅扫描一次表,这在千万级的数据量上能节约一半的资源和时间。
本文介绍了Oracle数据库中高级分组功能的应用,包括ROLLUP、CUBE、GROUPING和GROUPING_ID等关键字的使用方法,并通过实例说明如何进行复杂的数据分组,以提高查询效率。
1386

被折叠的 条评论
为什么被折叠?



