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

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

前
次
機械翻訳について

ROLLUP拡張

ROLLUPGROUP BYの拡張機能で、指定された属性グループにまたがる複数の小計のレベルの計算を可能にします。 総計も計算されます。

ROLLUP(CUBEなど)は、GROUPING SETSの構文上の文字です:
ROLLUP(a, b, c) = GROUPING SETS((a,b,c), (a,b), (a), ())
ROLLUPでは、ROLLUP句で指定されたグループ化リストに従って、最も詳細なレベルから総計までロールアップする小計を作成することがあります。 ROLLUPは、引数として属性の順序付けられたリストをとり、次のように機能します:
  1. GROUP BY句で指定した標準集計値が計算されます。
  2. 属性のリストを右から左に移動しながら、順番に高いレベルの小計を作成します。
  3. 総計を作成します。
  4. 最後に、ROLLUPでは、n+1レベルの小計が作成され、nは属性の数です。

    たとえば、問合せでtimeregion、およびdepartment (n=3)の属性でROLLUPを指定する場合、結果セットには4つの集計レベルの行が含まれます。

要約すると、ROLLUPは、小計に関するタスクでの使用を目的としています。

ROLLUP構文

ROLLUPは、次の構文を使用してGROUP BY句に記述されます:
GROUP BY ROLLUP(attributeList)
ここで、attributeListは、単一の属性か複数の属性のカンマ区切りリストです。 属性は、単一割当て属性または複数割当て属性の場合があります。 ROLLUPは、コレクションに対して使用できます。

ROLLUPの例

DEFINE Resellers AS SELECT
  DimReseller_AnnualSales AS Sales,
  DimGeography_CountryRegionName AS Countries,
  DimGeography_StateProvinceName AS States,
  DimReseller_OrderMonth AS OrderMonth
FROM ResellerState
WHERE DimReseller_OrderMonth IS NOT NULL;

RETURN ResellerSales AS
SELECT SUM(Sales) AS TotalSales
FROM Resellers
GROUP BY ROLLUP(Countries, States, OrderMonth)

部分ROLLUP

一部の小計のみが含まれるようにロールアップすることもできます。 この部分ロールアップでは次の構文を使用します:
GROUP BY expr1, ROLLUP(expr2, expr3)

この場合、GROUP BY句によって、小計が(2+1=3)レベルで作成されます。 つまり、レベル(expr1, expr2, expr3)、(expr1, expr2)および(expr1)です。

前述の例を使用した場合、一部ROLLUPGROUP BY句は次のようになります:
DEFINE Resellers AS SELECT
  ...

RETURN ResellerSales AS
SELECT SUM(Sales) AS TotalSales
FROM Resellers
GROUP BY Countries, ROLLUP(States, OrderMonth)