次のシナリオでは、動的に計算される範囲値でレコードを操作する方法について説明します。
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