with tmp as(
select '0001' userno, '01' pno from dual union all
select '0001' userno, '01' pno from dual union all
select '0001' userno, '02' pno from dual union all
select '0002' userno, '01' pno from dual union all
select '0002' userno, '03' pno from dual union all
select '0003' userno, '03' pno from dual)
select grouping_id(userno, pno) gid, userno, pno, count(1) cnt
from tmp
group by grouping sets((), (userno), (userno, pno))
其意义在于,我如果需要按照指定粒度进行汇总,而不用rollup或cube那种全组合的粒度,就可以用这种方式。
参考文档连接:
http://wenku.baidu.com/view/5150fd7ea26925c52cc5bff7.html