範囲バケットでのグルーピング

値範囲バケットを作成するには、レコード数をバケット・サイズで除算します。その後で、必要に応じてFLOORまたはCEILを使用して最も近い整数に丸めます。

次に示す例では、売上を金額別にグルーピングしてバケットに入れます。
/**
  * This groups results into buckets by amount,
  * rounded to the nearest 1000.
  */
RETURN Results AS
SELECT
   ROUND(FactSales_SalesAmount, -3) AS Bucket,
   COUNT(1) AS CT
FROM SaleState
GROUP BY Bucket

/**
  * This groups results into buckets by amount,
  * truncated to the next-lower 1000.
  */
RETURN Results AS
SELECT
   FLOOR(FactSales_SalesAmount/1000)*1000 AS Bucket,
   COUNT(1) AS CT
FROM SaleState
GROUP BY Bucket
ROUNDでも同様の効果を得られますが、次のようにバケットのセットは異なります。
次に示す例では、レコードをグルーピングして固定数のバケットに入れます。
DEFINE ValueRange AS SELECT
   COUNT(1) AS CT
FROM SaleState
GROUP BY SalesAmount
HAVING SalesAmount > 1.0 AND SalesAmount < 10000.0;

RETURN Buckets AS SELECT
   SUM(CT) AS CT,
   FLOOR((SalesAmount - 1)/999.0) AS Bucket
FROM ValueRange
GROUP BY Bucket
ORDER BY Bucket