SQLのHAVING句の用法
SQLでは、HAVING句はGROUP BY句に続いて、グループ化された結果に対してフィルターをかけるために使われます。これは、グループ化された結果に対して条件を適用し、条件を満たすグループのみを返すことができます。
HAVING句はWHERE句と似ていますが、行ではなくグループをフィルターするために使用されます。WHERE句は行のフィルターに使用され、HAVING句はグループのフィルターに使用されます。
文法は次のとおりです。
SELECT 列名
FROM テーブル名
GROUP BY 列名
HAVING 条件;
以下、HAVING 句について知っておくべき重要な注意事項です。
- HAVING句はGROUP BY句の直後に記述する必要があります。
- HAVING 句の条件には、集計関数(SUM、COUNT、AVG など)を使用できます。
- HAVING句の条件は、ANDやOR演算子と組み合わせて使用できます。
- HAVING句で使える条件は複数の列をまたぐことができる。
- HAVING句の条件では、=、<、> などの比較演算子を使用することができます。
- HAVING句の条件はワイルドカード(LIKEなど)を使用することができる。
HAVING 句の使用方法の例は以下です
「Orders」というテーブルがあり、OrderID、CustomerID、OrderTotal の列があるとします。OrderTotal が 1000 を超える顧客を見つけたいです。
CustomerID を選択し、OrderTotal の合計を TotalAmount として合計し、注文からグループ化し、OrderTotal の合計が 1000 を超える合計を取得します。
上記の例のコードでは、まず顧客 ID でグループ化し、各顧客の注文金額の合計を計算しています。その後、HAVING 句を使って、注文金額の合計が 1000 を超える顧客を抽出し、フィルタリングを行っています。
WHERE句で総注文金額をフィルタリングすると、条件を満たす行だけがフィルタリングされ、条件を満たすグループがフィルタリングされない点に注意してください。したがって、フィルタリングはグループ化した後にHAVING句を用いて行う必要があります。