プライマリ・コンテンツに移動
Oracle® Big Data Discovery Cloud Service EQLリファレンス

E65371-04
目次へ
目次
索引へ移動
索引

前
次
機械翻訳について

GROUPING関数

GROUPINGヘルパー機能は、GROUP BYリスト内の指定された属性式が集約されているかどうかを示します。

GROUPINGは、GROUPING SETSCUBEおよびROLLUPの支援機能です。 GROUPINGは、WHERE句、結合条件、集計関数内、またはグループ化属性の定義では使用できないことに注意してください。

ROLLUPおよびCUBEを使用すると、次の2つの困難な問題が発生することがあります:
  • 第一に、どの結果セット行が小計であるかをプログラム上でどのように判断し、指定された小計の正確な小計レベルをどのように探し出すかということです。 合計に対する割合(%)などの計算では、多くの場合、小計がある行を判別するための簡単な方法が必要になります。
  • 問合せ結果にROLLUPまたはCUBEによって作成された格納済のNULL値およびNULL値の両方が含まれる場合はどうなりますか。 2つを区別するにはどうすればよいですか。

GROUPING関数でこれらの問題を処理できます。

GROUPINGは、ROLLUPCUBE、またはGROUPING SETSによって返されるNULL値を標準のNULL値と区別するために使用されます。 ROLLUPCUBEまたはGROUPING SETSの操作の結果として返されるNULLは、NULLの特殊な使用方法です。 これは結果セット内の列プレースホルダーとして機能し、すべての値を意味します。

ROLLUPCUBEまたはGROUPING SETSの操作で作成されたNULL値を検出すると、GROUPINGではTRUEが返されます。 つまり、NULLが小計の行であることを示す場合、GROUPINGはTRUEを返します。 その他のタイプの値(格納されたNULLを含む)では、FALSEを戻します。

これにより、GROUPINGでは小計の結果セット行をプログラム上で決定できるため、指定された小計の正確な小計レベルを確認するのに役立ちます。

GROUPING構文

GROUPING構文は、次のとおりです:
GROUPING(attribute)
ここで、「属性」は単一の属性です。

GROUPINGの例

DEFINE r AS SELECT
  DimReseller_AnnualRevenue AS Revenue,
  DimReseller_AnnualSales AS Sales,
  DimReseller_OrderMonth AS OrderMonth
FROM SaleState;

RETURN results AS SELECT
  COUNT(1) AS COUNT,
  GROUPING(Revenue) AS grouping_Revenue,
  GROUPING(Sales) AS grouping_Sales,
  GROUPING(OrderMonth) AS grouping_OrderMonth
FROM r
GROUP BY
  GROUPING SETS (
    ROLLUP( 
      (Revenue),
      (Sales),
      (OrderMonth)
    )
  )