次のシナリオでは、動的に計算される範囲値でレコードを操作する方法について説明します。
GROUPを使用して、対象範囲を計算します。
HAVINGを使用して、動的な値でフィルタリングを有効にします(差分は結果に対するWHERE句の範囲内にないため、HAVINGを使用する必要があります)。
DEFINE CustomerTotals AS SELECT
SUM(SalesAmount) AS Total
FROM SaleState
GROUP BY CustomerKey ;
DEFINE Range AS SELECT
MAX(Total) AS MaxVal,
MIN(Total) AS MinVal,
((MaxVal - MinVal)/10) AS Decile,
MinVal + (Decile*9) AS Top10Pct
FROM CustomerTotals
GROUP ;
RETURN Result AS SELECT
SUM(SalesAmount) AS Total,
Total - Range[].Top10Pct AS Diff
FROM Range
GROUP BY CustomerKey
HAVING Diff > 0