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/
,如需转载,请注明出处,否则将追究法律责任。