GROUPING
当具有多级别聚合的 GROUP BY
查询生成 NULL
值以确定分组列中的小计时,消除 NULL 值的使用。这些来自于原始数据的 NULL
值也会发生在行中。 GROUPING
返回 1 — 在 expression 的值为以下值时:
-
NULL
,表示聚合的值 -
0 — 对任何其他值,包括行中的
NULL
值
行为类型
不可变语法
GROUPING ( expression )
参数
- 表达式
GROUP BY
子句中的表达式
示例
以下查询使用 GROUPING
函数,将 GROUP BY
表达式之一作为实参。对于每一行,GROUPING
返回以下值之一:
-
0
:列是该行的组的一部分 -
1
:列不是该行的组的一部分
GROUPING(Year)
列中电力和书籍的值为 1,表示这些值是小计。GROUPING(Category)
和 GROUPING(Year)
最右边的列值为 1
。此值表示两个列都不会成为 GROUP BY
的结果。最终行表示总销售量。
=> SELECT Category, Year, SUM(Amount),
GROUPING(Category), GROUPING(Year) FROM expenses
GROUP BY ROLLUP(Category, Year) ORDER BY Category, Year, GROUPING_ID();
Category | Year | SUM | GROUPING | GROUPING
-------------+------+--------+----------+----------
Books | 2005 | 39.98 | 0 | 0
Books | 2007 | 29.99 | 0 | 0
Books | 2008 | 29.99 | 0 | 0
Books | | 99.96 | 0 | 1
Electricity | 2005 | 109.99 | 0 | 0
Electricity | 2006 | 109.99 | 0 | 0
Electricity | 2007 | 229.98 | 0 | 0
Electricity | | 449.96 | 0 | 1
| | 549.92 | 1 | 1