首页 > 数据库 > mysql教程 > Oracle group by的按照不同粒度聚合方法

Oracle group by的按照不同粒度聚合方法

WBOY
发布: 2016-06-07 17:20:20
原创
1157 人浏览过

一直以为group by 除了rollup和cube可以按照子句中指定的字段进行不同粒度的聚合,没有其他的方法了。今天因为groupby的bug(has

一直以为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那种全组合的粒度,,就可以用这种方式。

linux

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板