GROUPING 聚合函数
当与分组集和超级分组结合使用时,GROUPING函数返回一个值,指示GROUP BY结果中返回的行是否是由不包括表达式所表示的列的分组集生成的。
该模式是 SYSIBM。
- 表达式
与同一子查询的 GROUP BY 子句中的分组表达式匹配的表达式。
函数的结果是一个小整数。 结果为以下数值之一:
- 1
- 返回行的表达式值为空,该行由超级组生成。 生成的行可用于为GROUP BY表达式提供小计值。
- 0
- 该数值不同于之前列出的数值。
示例
SELECT SALES_DATE, SALES_PERSON,
SUM(SALES) AS UNITS_SOLD,
GROUPING(SALES_DATE) AS DATE_GROUP,
GROUPING(SALES_PERSON) AS SALES_GROUP
FROM SALES
GROUP BY CUBE (SALES_DATE, SALES_PERSON)
ORDER BY SALES_DATE, SALES_PERSON;之前的查询返回的结果与以下类似:
SALES_DATE SALES_PERSON UNITS_SOLD DATE_GROUP SALES_GROUP
---------- --------------- ----------- ----------- -----------
12/31/1995 GOUNOT 1 0 0
12/31/1995 LEE 6 0 0
12/31/1995 LUCCHESSI 1 0 0
12/31/1995 - 8 0 1
03/29/1996 GOUNOT 11 0 0
03/29/1996 LEE 12 0 0
03/29/1996 LUCCHESSI 4 0 0
03/29/1996 - 27 0 1
03/30/1996 GOUNOT 21 0 0
03/30/1996 LEE 21 0 0
03/30/1996 LUCCHESSI 4 0 0
03/30/1996 - 46 0 1
03/31/1996 GOUNOT 3 0 0
03/31/1996 LEE 27 0 0
03/31/1996 LUCCHESSI 1 0 0
03/31/1996 - 31 0 1
04/01/1996 GOUNOT 14 0 0
04/01/1996 LEE 25 0 0
04/01/1996 LUCCHESSI 4 0 0
04/01/1996 - 43 0 1
- GOUNOT 50 1 0
- LEE 91 1 0
- LUCCHESSI 14 1 0
- - 155 1 1应用程序可以识别SALES_DATE 小计行 ,因为DATE_GROUP的值为0,而SALES_GROUP的值为1。 可以识别出 SALES_PERSON 小计行 ,因为 DATE_GROUP 的值为 1,而 SALES_GROUP 的值为 0。 如果DATE_GROUP和SALES_GROUP的值都为1,则表明这是一行总计。
