それぞれの集計に、独自のフィルタリングWHERE
句を指定できます。 集計関数フィルタは、入力を集計式にフィルタします。 スパース・データまたは異種データの使用に役立ちます。 フィルタ条件を満たすレコードのみが、集計関数の計算の一因となります。
集計ごとのWHERE
フィルタは、事前集計を実際に適用します。 理由は、集約後まで遅延した場合、実装は必要とするすべての列に必ずしもアクセスできるわけではないためです。
AggregateFunction(Expression) WHERE (Filter)
RETURN NetSales AS SELECT SUM(Amount) WHERE (Type='Sale') AS SalesTotal, SUM(Amount) WHERE (Type='Return') AS ReturnTotal, ARB(SalesTotal – ReturnTotal) AS Total FROM SaleState GROUP BY Year, Month, Category
SUM(CASE WHEN Type='Sale' THEN Amount END) AS SalesTotal, SUM(CASE WHEN type='Return' THEN Amount END) AS ReturnTotal ...
注意:
これらのWHERE
句は、文レベルのWHERE
句と同様に、割当てではなくレコードに対しても機能します。 ソース・レコードは、文レベルのWHERE
句および集計WHERE
句を渡した場合、集計に貢献します。