基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
GROUPING
更新时间:2026-07-15 20:42:46
描述
该函数将 GROUP BY 子句扩展(如 ROLLUP)生成的超聚集行中的 NULL 和常规行中的 NULL 区分开来。该函数把超聚集行中的 NULL 返回 1,常规行中的值返回 0。
语法
GROUPING(expr)
参数解释
参数 expr 是 GROUP BY 子句中的一个表达式。
返回类型
返回 NUMBER 数据类型。
示例
创建表 tbl1,并插入数据。查询以列 col2 和列 col3 分组及 ROLLUP 子句生成的汇总行和正常记录。
obclient> CREATE TABLE tbl1(col1 INT,col2 INT,col3 INT);
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES(1,NULL,NULL),(2,NULL,5),(3,1,6),(4,1,9),
(5,1,NULL),(6,2,3),(7,2,NULL),(8,2,18),(9,2,9),
(10,3,10),(11,3,12),(12,3,NULL);
Query OK, 12 rows affected
Records: 12 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM tbl1;
+------+------+------+
| COL1 | COL2 | COL3 |
+------+------+------+
| 1 | NULL | NULL |
| 2 | NULL | 5 |
| 3 | 1 | 6 |
| 4 | 1 | 9 |
| 5 | 1 | NULL |
| 6 | 2 | 3 |
| 7 | 2 | NULL |
| 8 | 2 | 18 |
| 9 | 2 | 9 |
| 10 | 3 | 10 |
| 11 | 3 | 12 |
| 12 | 3 | NULL |
+------+------+------+
12 rows in set
obclient> SELECT col2,col3,DECODE(GROUPING(col3),1,'汇总','正常记录'),COUNT(*)
FROM tbl1
GROUP BY ROLLUP(col2,col3);
+------+------+--------------------------------------------------+----------+
| COL2 | COL3 | DECODE(GROUPING(COL3),1,'汇总','正常记录') | COUNT(*) |
+------+------+--------------------------------------------------+----------+
| 1 | 6 | 正常记录 | 1 |
| 1 | 9 | 正常记录 | 1 |
| 1 | NULL | 正常记录 | 1 |
| 1 | NULL | 汇总 | 3 |
| 2 | 3 | 正常记录 | 1 |
| 2 | 9 | 正常记录 | 1 |
| 2 | 18 | 正常记录 | 1 |
| 2 | NULL | 正常记录 | 1 |
| 2 | NULL | 汇总 | 4 |
| 3 | 10 | 正常记录 | 1 |
| 3 | 12 | 正常记录 | 1 |
| 3 | NULL | 正常记录 | 1 |
| 3 | NULL | 汇总 | 3 |
| NULL | 5 | 正常记录 | 1 |
| NULL | NULL | 正常记录 | 1 |
| NULL | NULL | 汇总 | 2 |
| NULL | NULL | 汇总 | 12 |
+------+------+--------------------------------------------------+----------+
17 rows in set