集計ごとのフィルタ

各集計に固有の、フィルタリング用のWHERE句を指定できます。集計関数フィルタは、集計式の入力をフィルタリングします。これが役に立つのは、スパースまたは異種混在のデータを扱うときです。レコードのうち、フィルタ条件を満たすもののみが集計関数の計算に使用されます。

構文は、次のとおりです。
AggregateFunction(Expression) WHERE (Filter)
次に例を示します。
RETURN NetSales AS SELECT
  SUM(Amount) WHERE (Type='Sale')
    AS SalesTotal,
  SUM(Amount) WHERE (Type='Return')
    AS ReturnTotal,
  SalesTotal – ReturnTotal AS Total
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句を通過した場合です。