有的小伙伴会发现在数据统计报表的时候会经常在最后对列进行一个汇总,那么在oracle中是那些函数来实现汇总的呢?今天就来讲一下rollup函数和cube函数的区分。
首先,创建一张表tmp1,数据如下:
那么,我们先看一下cube汇总出来的数据是什么样子的吧?
select t_class,t_address,(t_number) t_number from tmp1 group by cube(t_class,t_address);
有的小伙伴可能已经发现了,cube函数汇总的数据相当于把所有的可能性的数据汇总了出来。没错,其实这条sql语句相当于以下的union all语句:
select null,null,sum(t_number) t_number from tmp1
union all
select null,t_address,sum(t_number) t_number from tmp1 group by t_address
union all
select t_class,null,sum(t_number) t_number from tmp1 group by t_class
union all
select t_class,t_addres