こんにちは、阿久梨絵です!
SQL の条件指定でよく使われる WHERE と HAVING は、一見似ているように見えますが、適用されるタイミングが異なります。
・WHERE → レコード単位でフィルタリング(GROUP BY の前に適用)
・HAVING → 集計結果に対してフィルタリング(GROUP BY の後に適用)
簡単に言うと、「HAVING」は集計後のデータに条件を設定できる点がポイント です。
WHERE の基本的な使い方
WHERE は個別のレコードを対象にフィルタリングを行います。
SELECT product_name, price
FROM products
WHERE price > 5000;
ポイント
・WHERE は 集計前のデータ を絞り込む
・個別のレコードに直接適用される
この例では「価格が5000円以上の商品」だけを取得できます。
HAVING の基本的な使い方
HAVING は GROUP BY の後に集計結果をフィルタリング できます。
SELECT category, COUNT(*) AS total_products
FROM products
GROUP BY category
HAVING total_products > 10;
ポイント
・HAVING は 集計後のデータを対象にフィルタリング
・GROUP BY でまとめた結果に条件を設定できる
この例では「商品数が10個以上のカテゴリー」だけを取得できます。
WHERE と HAVING の違いを比較
用途 | WHERE | HAVING |
---|---|---|
フィルタの対象 | 個々のレコード | 集計後のデータ |
GROUP BY の適用 | 前 | 後 |
使用例 | price > 5000 | COUNT(*) > 10 |
データが集計される前にフィルタするなら WHERE、集計後にフィルタするなら HAVING を使い分けるのが重要です。
まとめ
・WHERE はレコード単位のフィルタリングで、集計前に適用される
・HAVING は集計後の結果に適用され、GROUP BY と組み合わせて使う
・フィルタを適用するタイミングを意識すると、より正確なデータが取得できる
「WHERE」と「HAVING」の正しい使い分けをマスターし、 SQL の条件指定をスムーズにしましょう。
阿久梨絵でした!