ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ROLLUP与CUBE的不同

ROLLUP与CUBE的不同

原创 Linux操作系统 作者:hky87 时间:2010-04-21 20:33:55 0 删除 编辑
group by rollup(a,b,c) 
 首先对(a,b,c)进行group by,然后对(a,b)进行group by,然后对(a)进行group by,最后对全表进行group by操作。
表t中的数据只有一行(a1,b1,c1,1)

select 
a,b,c, count(*)
from t 
group by rollup(a,b,c)

  相当于以下
select a,b,c, count(*)
  from t
 group by a,b,c
UNION ALL
select a,b,NULL,count(*)
  from t
 group by a,b,NULL
UNION ALL
select a,NULL,NULL,count(*)
  from t
 group by a,NULL,NULL
UNION ALL
select NULL,NULL,NULL,count(*)
  from t
 group by NULL,NULL,NULL

查询结果均为
A          B          C            COUNT(*)
---------- ---------- ---------- ----------
a1         b1         c1                  1
a1         b1                             1
a1                                        1
                                          1

group by cube(a,b,c)  
 首先对(a,b,c)进行group by,然后依次是(a,b), (a,c), (a), (b,c), (b), (c),最后对全表进行group by操作

select 
a,b,c, count(*)
from t 
group by cube(a,b,c)
查询结果是
A          B          C            COUNT(*)
---------- ---------- ---------- ----------
                                          1
                      c1                  1
           b1                             1
           b1         c1                  1
a1                                        1
a1                    c1                  1
a1         b1                             1
a1         b1         c1                  1

同样情况下使用cube会返回更多的值


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10314474/viewspace-660371/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Database Link的创建
请登录后发表评论 登录
全部评论

注册时间:2009-10-09

  • 博文量
    87
  • 访问量
    345410