データマネジメントの学校
← コースに戻る

未ログインのため、この講座の進捗は記録されません。ログインすると記録が残るようになります。

HAVINGによる集計後の絞り込み

WHEREは集計前の「元の行」を絞り込むのに対し、HAVINGはGROUP BYで集計した「後」の結果を絞り込む。「合計金額が1000円を超える顧客だけ」のような条件は、集計値(SUMなど)に対する条件なのでHAVINGを使う。

SELECT customer_id, SUM(amount) AS total_amount
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;

WHEREはHAVINGより先に評価され、GROUP BYで集計する前の行を絞り込む。集計前に絞り込みたい条件はWHERE、集計した結果(SUM・COUNTなど)に対する条件はHAVING、と使い分ける。

SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
HAVING COUNT(*) >= 2;