Oracle学习笔记--grouping/grouping_id
2014-11-03 14:14
330 查看
Grouping函数:
可以接受一列,返回0或1。如果列值为空,则返回1,非空则返回0。它只能在rollup和或cube函数中使用,因为在统计中显示“全部”的那一项统计值时,那一项的标签通常是空的,这时grouping就非常有用,还可以在grouping的基础上进行decode, case等进行美化。
SQL> select grouping(index_type) g_ind, grouping(status) g_st, index_type, status, count(*)
2 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 572
0 0 FUNCTION-BASED NORMAL VALID 17
0 0 FUNCTION-BASED DOMAIN VALID 1
0 0 IOT - TOP VALID 115
0 0 CLUSTER VALID 10
0 0 NORMAL VALID 4557
0 0 NORMAL N/A 56
0 0 DOMAIN VALID 1
0 0 BITMAP VALID 8
0 0 BITMAP N/A 7
0 1 IOT - TOP 115
0 1 FUNCTION-BASED DOMAIN 1
0 1 DOMAIN 1
0 1 CLUSTER 10
0 1 BITMAP 15
0 1 FUNCTION-BASED NORMAL 17
0 1 NORMAL 4613
0 1 LOB 573
1 1 5345
20 rows selected
Grouping_id函数:
比grouping还强点,可以接收多个列,这几个列都不为空时,返回0,只要有一个为空,则返回1,如果都为空,则返回3。
下面这条查询把grouping_id牛刀杀鸡,当做grouping用了,可以看到结果跟用grouping是完全一样。
SQL> select grouping_id(index_type) g_ind, grouping_id(status) g_st, index_type, status, count(*)
2 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 572
0 0 FUNCTION-BASED NORMAL VALID 17
0 0 FUNCTION-BASED DOMAIN VALID 1
0 0 IOT - TOP VALID 115
0 0 CLUSTER VALID 10
0 0 NORMAL VALID 4557
0 0 NORMAL N/A 56
0 0 DOMAIN VALID 1
0 0 BITMAP VALID 8
0 0 BITMAP N/A 7
0 1 IOT - TOP 115
0 1 FUNCTION-BASED DOMAIN 1
0 1 DOMAIN 1
0 1 CLUSTER 10
0 1 BITMAP 15
0 1 FUNCTION-BASED NORMAL 17
0 1 NORMAL 4613
0 1 LOB 573
1 1 5345
20 rows selected
下面这条查询才体现了grouping_id的作用。
SQL> select grouping_id(index_type, status) g_st, index_type, status, count(*)
2 from t group by rollup(index_type, status) order by 1, 2;
G_ST INDEX_TYPE STATUS COUNT(*)
---------- --------------------------- -------- ----------
0 BITMAP VALID 8
0 BITMAP N/A 7
0 CLUSTER VALID 10
0 DOMAIN VALID 1
0 FUNCTION-BASED DOMAIN VALID 1
0 FUNCTION-BASED NORMAL VALID 17
0 IOT - TOP VALID 115
0
4000
LOB N/A 1
0 LOB VALID 572
0 NORMAL N/A 56
0 NORMAL VALID 4557
1 BITMAP 15
1 CLUSTER 10
1 DOMAIN 1
1 FUNCTION-BASED DOMAIN 1
1 FUNCTION-BASED NORMAL 17
1 IOT - TOP 115
1 LOB 573
1 NORMAL 4613
3 5345
20 rows selected
根据grouping_id接收不同的列的组合,可以美化出很神奇的结果。
可以接受一列,返回0或1。如果列值为空,则返回1,非空则返回0。它只能在rollup和或cube函数中使用,因为在统计中显示“全部”的那一项统计值时,那一项的标签通常是空的,这时grouping就非常有用,还可以在grouping的基础上进行decode, case等进行美化。
SQL> select grouping(index_type) g_ind, grouping(status) g_st, index_type, status, count(*)
2 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 572
0 0 FUNCTION-BASED NORMAL VALID 17
0 0 FUNCTION-BASED DOMAIN VALID 1
0 0 IOT - TOP VALID 115
0 0 CLUSTER VALID 10
0 0 NORMAL VALID 4557
0 0 NORMAL N/A 56
0 0 DOMAIN VALID 1
0 0 BITMAP VALID 8
0 0 BITMAP N/A 7
0 1 IOT - TOP 115
0 1 FUNCTION-BASED DOMAIN 1
0 1 DOMAIN 1
0 1 CLUSTER 10
0 1 BITMAP 15
0 1 FUNCTION-BASED NORMAL 17
0 1 NORMAL 4613
0 1 LOB 573
1 1 5345
20 rows selected
Grouping_id函数:
比grouping还强点,可以接收多个列,这几个列都不为空时,返回0,只要有一个为空,则返回1,如果都为空,则返回3。
下面这条查询把grouping_id牛刀杀鸡,当做grouping用了,可以看到结果跟用grouping是完全一样。
SQL> select grouping_id(index_type) g_ind, grouping_id(status) g_st, index_type, status, count(*)
2 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 572
0 0 FUNCTION-BASED NORMAL VALID 17
0 0 FUNCTION-BASED DOMAIN VALID 1
0 0 IOT - TOP VALID 115
0 0 CLUSTER VALID 10
0 0 NORMAL VALID 4557
0 0 NORMAL N/A 56
0 0 DOMAIN VALID 1
0 0 BITMAP VALID 8
0 0 BITMAP N/A 7
0 1 IOT - TOP 115
0 1 FUNCTION-BASED DOMAIN 1
0 1 DOMAIN 1
0 1 CLUSTER 10
0 1 BITMAP 15
0 1 FUNCTION-BASED NORMAL 17
0 1 NORMAL 4613
0 1 LOB 573
1 1 5345
20 rows selected
下面这条查询才体现了grouping_id的作用。
SQL> select grouping_id(index_type, status) g_st, index_type, status, count(*)
2 from t group by rollup(index_type, status) order by 1, 2;
G_ST INDEX_TYPE STATUS COUNT(*)
---------- --------------------------- -------- ----------
0 BITMAP VALID 8
0 BITMAP N/A 7
0 CLUSTER VALID 10
0 DOMAIN VALID 1
0 FUNCTION-BASED DOMAIN VALID 1
0 FUNCTION-BASED NORMAL VALID 17
0 IOT - TOP VALID 115
0
4000
LOB N/A 1
0 LOB VALID 572
0 NORMAL N/A 56
0 NORMAL VALID 4557
1 BITMAP 15
1 CLUSTER 10
1 DOMAIN 1
1 FUNCTION-BASED DOMAIN 1
1 FUNCTION-BASED NORMAL 17
1 IOT - TOP 115
1 LOB 573
1 NORMAL 4613
3 5345
20 rows selected
根据grouping_id接收不同的列的组合,可以美化出很神奇的结果。
相关文章推荐
- Oracle学习笔记--grouping/grouping_id
- Oracle学习笔记--grouping/grouping_id
- ORACLE GROUPING_ID函数
- Aggregation聚合函数--grouping,grouping_id,grouping set,cube,rollup
- ORACLE GROUPING_ID函数(转)
- rollup,cube,grouping,grouping_id
- GROUP函数-GROUP_ID,GROUPING,GROUPING_ID
- Oracle grouping_id group_id grouping 介绍
- 【转】rollup、cub、grouping sets、grouping、grouping_id在报表中的应用
- 7.8 使用GROUPING_ID()来扩展报告
- ORACLE GROUPING_ID函数
- Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
- ORACLE GROUPING_ID函数
- grouping sets && grouping_id
- grouping/grouping_id 函数
- 标识分组的函数:group_id(),grouping(),grouping_id()
- Oracle函数之聚合函数---1、关于grouping与grouping_id
- Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
- oracle中grouping和grouping_id
- HIVE中grouping__id使用场景