SQL 解説書

GROUPING

>>-GROUPING--(--expression--)----------------------------------><
 

スキーマは SYSIBM です。

GROUPING 関数は、グループ化集合およびスーパー・グループ (詳細については、 GROUP BY 文節を参照) に関連して使用され、 GROUP BY 応答セットで戻された行が、 expression によって表される列を除外し、 グループ化集合によって生成された行であるか否かを示す値を戻します。

引き数はどのようなタイプでも構いませんが、 GROUP BY 文節の項目でなければなりません。

この関数の結果は短精度整数 (small integer) です。 結果は以下のいずれかの値に設定されます。

1
戻された行の expression の値はヌル値であり、 しかもその行はスーパー・グループによって生成されました。 生成されたその行は、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

アプリケーションは、DATE_GROUP の値が 0 であり、 SALES_GROUP の値が 1 であることによって、 SALES_DATE の小計行を認識することができます。 SALES_PERSON の小計行は、DATE_GROUP の値が 1 であり、 SALES_GROUP の値が 0 であることによって認識することができます。 合計行は、DATE_GROUP と SALES_GROUP の両方の値が 1 であることによって認識することができます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]