GROUPING 聚合函数

当与分组集超级分组结合使用时,GROUPING函数返回一个值,指示GROUP BY结果中返回的行是否是由不包括表达式所表示的列的分组集生成的。

阅读语法图跳过可视化语法图GROUPING( 表达式)

该模式是 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,则表明这是一行总计