SQLのHAVING句とWHERE句の違いと使用例

SQLを使用する際には、データのフィルタリングが非常に重要な操作となります。特に、WHERE句とHAVING句はよく使用されるSQLの機能ですが、これらの違いと適切な使用例について理解することが、効率的なデータ操作につながります。本記事では、WHERE句とHAVING句の基本的な違いから具体的な使用例までを解説します。

目次

基本的な違い

WHERE句とHAVING句は、データをフィルタリングするための機能ですが、基本的な違いがあります。

WHERE句

WHERE句は、データの選択条件を設定する際に使用されます。具体的には、FROM句で指定されたテーブルの行(レコード)をフィルタリングします。

HAVING句

一方で、HAVING句はGROUP BY句でグループ化されたデータに対して条件を設定するために使用されます。つまり、集約関数(SUM, COUNT, AVGなど)を用いた後のデータに対してフィルタリングを行います。

使用例

WHERE句の使用例

以下のような商品テーブルがあるとします。

ProductIDNamePrice
1Apple100
2Banana80
3Cherry200
商品テーブル

価格が100以上の商品を選びたい場合、以下のようなSQLクエリを使用します。

SELECT * FROM Products WHERE Price >= 100;

HAVING句の使用例

次に、以下のような注文テーブルがあるとします。

OrderIDProductIDQuantity
113
225
312
注文テーブル

商品ごとの合計数量が5以上のものを選びたい場合、以下のようなSQLクエリを使用します。

SELECT ProductID, SUM(Quantity) FROM Orders GROUP BY ProductID HAVING SUM(Quantity) >= 5;

まとめ

WHERE句はテーブルの行を直接フィルタリングするのに対して、HAVING句は集約関数を用いた後のデータに対してフィルタリングを行います。適切な場面でこれらの句を使い分けることが、SQLで効率的にデータ操作を行うための鍵です。

コメント

コメントする

目次