GROUPING 集約関数

GROUPING 関数は、grouping-sets および super-groups と組み合わせて使用されると、GROUP BY の結果で返された行が、expression で表された列を除外するグループ化セットによって生成された行であるかどうかを示す値を返します。

構文図を参照するビジュアルシンタックスダイアグラムをスキップするGROUPING( 式)

スキーマは SYSIBM です。

同じ副選択の GROUP BY 節の grouping-expression と一致する式です。

この関数の結果は短精度整数値です。 結果は、以下のいずれかの値になります。
1
返された行の expression の値は NULL 値であり、この行は super-group によって生成されました。 生成されたこの行を使用して、GROUP BY 式の sub-total 値を得ることができます。
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

DATE_GROUP の値が 0 で、SALES_GROUP の値が 1 であるため、アプリケーションは SALES_DATE sub-total 行を識別できます。 DATE_GROUP の値が 1 であり、SALES_GROUP の値が 0 であるため、SALES_PERSON sub-total 行を識別できます。 grand total 行は、DATE_GROUP と SALES_GROUP の両方の値 1 によって識別できます。