Oracle group by的按照不同粒度聚合方法
一直以为group by 除了rollup和cube可以按照子句中指定的字段进行不同粒度的聚合,没有其他的方法了。今天因为groupby的bug(hash group b y)而发现了另一种方法,如下例:
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那种全组合的粒度,就可以用这种方式。
相关推荐
Fightingxr 2020-06-08
翡翠谷 2020-05-28
athrenzala 2019-11-19
mycosmos 2019-11-07
KevinMitnick 2019-09-01
yunna0 2019-10-23
DAV数据库 2019-10-22
xinxuan 2017-09-01
阿文丶 2019-06-13
MySQLl 2019-05-08
Enbiting 2017-09-01
KittyLandon 2012-02-17
tonybest 2010-05-10
Cricket 2019-07-01
tanjiayq 2019-07-01
Cshnuscw 2017-01-08
Cshnuscw 2015-02-05
杜鲁门 2014-02-21