GROUPING 集約関数
GROUPING 関数は、grouping-sets および super-groups と組み合わせて使用されると、GROUP BY の結果で返された行が、expression で表された列を除外するグループ化セットによって生成された行であるかどうかを示す値を返します。
スキーマは 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 1DATE_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 によって識別できます。
