SQLのHAVING句を活用した複雑なフィルタリングの実例解説

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
テーブル1: 人口テーブル

上記のSQLクエリによって、テーブル1からは大阪府と京都府のデータが抽出されます。

HAVING句とWHERE句の組み合わせ

WHERE句とHAVING句は併用することができます。これにより、行と集計結果の両方に対するフィルタリングが可能です。

SELECT 都道府県, COUNT(*)
FROM 人口テーブル
WHERE 年齢 > 20
GROUP BY 都道府県
HAVING COUNT(*) > 10000

具体的なデータでの例

都道府県年齢
東京都25
大阪府30
京都府22
テーブル2: 年齢と都道府県

この場合、テーブル2からはすべてのデータが抽出される可能性があります(人口が10,000以上であれば)。

まとめ

HAVING句は、GROUP BYでの集計結果に対して条件を付ける非常に強力な機能です。複数の条件を組み合わせたり、WHERE句と併用することで、さまざまな複雑なデータ抽出が可能です。この機能をマスターすることで、より高度なデータ分析が行えるようになります。

コメント

コメントする

目次