Group by RollUp&Group by CUBE&GroupBy 区别
2010-06-28 16:52
489 查看
1、如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。
2、如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。
举例:SQL> select grouping(index_type) g_ind,grouping(status) g_st,index_type,status,count(*) from t group by rollup(index_type,status) order by 1,2;
G_IND G_ST INDEX_TYPE STATUS COUNT(*)
---------- ---------- --------------------------- -------- ----------
0 0 LOB N/A 1
0 0 LOB VALID 587
0 0 FUNCTION-BASED NORMAL VALID 16
0 0 FUNCTION-BASED DOMAIN VALID 1
0 0 IOT - TOP VALID 103
0 0 CLUSTER VALID 10
0 0 NORMAL VALID 3171
0 0 NORMAL N/A 94
0 0 BITMAP VALID 1
0 1 FUNCTION-BASED NORMAL 16
0 1 NORMAL 3265
0 1 IOT - TOP 103
0 1 FUNCTION-BASED DOMAIN 1
0 1 BITMAP 1
0 1 CLUSTER 10
0 1 LOB 588
1 1 3984
17 rows selected
SQL> select grouping(index_type) g_ind,grouping(status) g_st,index_type,status,count(*) from t group by cube(index_type,status) order by 1,2;
G_IND G_ST INDEX_TYPE STATUS COUNT(*)
---------- ---------- --------------------------- -------- ----------
0 0 LOB N/A 1
0 0 CLUSTER VALID 10
0 0 FUNCTION-BASED NORMAL VALID 16
0 0 NORMAL VALID 3171
0 0 IOT - TOP VALID 103
0 0 LOB VALID 587
0 0 FUNCTION-BASED DOMAIN VALID 1
0 0 BITMAP VALID 1
0 0 NORMAL N/A 94
0 1 IOT - TOP 103
0 1 CLUSTER 10
0 1 NORMAL 3265
0 1 BITMAP 1
0 1 LOB 588
0 1 FUNCTION-BASED NORMAL 16
0 1 FUNCTION-BASED DOMAIN 1
1 0 N/A 95
1 0 VALID 3889
1 1 3984
19 rows selected
2、如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。
举例:SQL> select grouping(index_type) g_ind,grouping(status) g_st,index_type,status,count(*) from t group by rollup(index_type,status) order by 1,2;
G_IND G_ST INDEX_TYPE STATUS COUNT(*)
---------- ---------- --------------------------- -------- ----------
0 0 LOB N/A 1
0 0 LOB VALID 587
0 0 FUNCTION-BASED NORMAL VALID 16
0 0 FUNCTION-BASED DOMAIN VALID 1
0 0 IOT - TOP VALID 103
0 0 CLUSTER VALID 10
0 0 NORMAL VALID 3171
0 0 NORMAL N/A 94
0 0 BITMAP VALID 1
0 1 FUNCTION-BASED NORMAL 16
0 1 NORMAL 3265
0 1 IOT - TOP 103
0 1 FUNCTION-BASED DOMAIN 1
0 1 BITMAP 1
0 1 CLUSTER 10
0 1 LOB 588
1 1 3984
17 rows selected
SQL> select grouping(index_type) g_ind,grouping(status) g_st,index_type,status,count(*) from t group by cube(index_type,status) order by 1,2;
G_IND G_ST INDEX_TYPE STATUS COUNT(*)
---------- ---------- --------------------------- -------- ----------
0 0 LOB N/A 1
0 0 CLUSTER VALID 10
0 0 FUNCTION-BASED NORMAL VALID 16
0 0 NORMAL VALID 3171
0 0 IOT - TOP VALID 103
0 0 LOB VALID 587
0 0 FUNCTION-BASED DOMAIN VALID 1
0 0 BITMAP VALID 1
0 0 NORMAL N/A 94
0 1 IOT - TOP 103
0 1 CLUSTER 10
0 1 NORMAL 3265
0 1 BITMAP 1
0 1 LOB 588
0 1 FUNCTION-BASED NORMAL 16
0 1 FUNCTION-BASED DOMAIN 1
1 0 N/A 95
1 0 VALID 3889
1 1 3984
19 rows selected
相关文章推荐
- Group by RollUp&Group by CUBE&GroupBy 区别
- group by rollup和group by cube的用法和区别
- Hive_6. 数据聚合 -- Group By & Grouping_SETS & RollUp & CUBE & Having
- oracle group by中cube和rollup字句的使用方法及区别
- group by cube & rollup
- group by cube,rollup, grouping set的用法
- Group By 多个分组集小结 --GROUPING SETS,GROUP BY CUBE,GROUP BY ROLLUP,GROUPING(),GROUPING_ID()
- grouping sets,cube,rollup,grouping__id,group by
- group by ()函数汇总之group by rollup()、group by cube()、grouping()
- Oracle Group by+rollup+cube 的应用
- group、grouping、rollup、cube的用法和区别
- oracle group by中cube…
- group、grouping、rollup、cube的用法和区别(本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/junmail/archive/2006/12/26/1463132.aspx)
- 使用group by rollup和group by cube后的辅助函数
- Spark中 groupBy() 与groupByKey()的区别
- group、grouping、rollup、cube的用法和区别
- SQL GROUP BY GROUPING SETS,ROLLUP,CUBE(需求举例)
- Oracle group by高级用法对比效果(ROLLUP、GROUPING SETS、CUBE)
- mssql分组 ( ROLLUP /CUBE/GROUP BY /)
- order_by_、group_by_、having的用法区别