SQLでデータを取り扱う際、WHERE句だけでは不十分な場合もあります。特に、GROUP BYでグルーピングした後に、その集計結果に対してフィルタをかけたい場合にHAVING句が役立ちます。この記事では、複数の条件を組み合わせてHAVING句を使用する、複雑なフィルタリングの具体的な例を解説します。
目次
基本的なHAVING句の使い方
HAVING句は、GROUP BYでグルーピングした結果に対して条件を付けるためのSQLの文法です。WHERE句が行に対する条件を付けるのに対して、HAVING句は集計結果に対する条件を付けます。
基本構文
SELECT 列名1, 列名2, 集計関数(列名3)
FROM テーブル名
GROUP BY 列名1, 列名2
HAVING 集計関数(列名3) 条件
HAVING句の複雑な使用例
複数の条件を組み合わせる場合や、他のSQL文と連携させるなど、HAVING句の使い方は多岐に渡ります。
複数条件の組み合わせ
ANDやORを用いて、複数のHAVING条件を組み合わせることができます。
SELECT 都道府県, COUNT(*) as 人口
FROM 人口テーブル
GROUP BY 都道府県
HAVING COUNT(*) > 10000 AND COUNT(*) < 50000
具体的なデータでの例
都道府県 | 人口 |
---|---|
東京都 | 15000 |
大阪府 | 20000 |
京都府 | 12000 |
上記のSQLクエリによって、テーブル1からは大阪府と京都府のデータが抽出されます。
HAVING句とWHERE句の組み合わせ
WHERE句とHAVING句は併用することができます。これにより、行と集計結果の両方に対するフィルタリングが可能です。
SELECT 都道府県, COUNT(*)
FROM 人口テーブル
WHERE 年齢 > 20
GROUP BY 都道府県
HAVING COUNT(*) > 10000
具体的なデータでの例
都道府県 | 年齢 |
---|---|
東京都 | 25 |
大阪府 | 30 |
京都府 | 22 |
この場合、テーブル2からはすべてのデータが抽出される可能性があります(人口が10,000以上であれば)。
まとめ
HAVING句は、GROUP BYでの集計結果に対して条件を付ける非常に強力な機能です。複数の条件を組み合わせたり、WHERE句と併用することで、さまざまな複雑なデータ抽出が可能です。この機能をマスターすることで、より高度なデータ分析が行えるようになります。
created by Rinker
¥4,554
(2024/09/08 04:25:02時点 Amazon調べ-詳細)
コメント