この記事では、SQLのHAVING句を使用したグループのフィルタリングについて詳しく解説します。HAVING句は、SQLクエリのGROUP BY句に続いて使用されることが多く、集計関数と組み合わせてグループに条件を適用する際に用います。具体的なSQLコードを交えながら説明していきます。
目次
はじめに:HAVING句とは
HAVING句は、SQLでデータを集計する際に、特定の条件に一致するグループのみをフィルタリングするために使用されます。WHERE句と似ていますが、WHERE句は行レベルでのフィルタリングを行い、HAVING句はグループレベルでのフィルタリングを行います。
基本的な使用方法
HAVING句は、主にGROUP BY句と組み合わせて使用されます。以下のSQLコードは、HAVING句を使って「売上が1000以上の商品カテゴリ」だけを取得する例です。
SELECT category, SUM(sales)
FROM sales_data
GROUP BY category
HAVING SUM(sales) >= 1000;
SQLクエリの流れ
このSQLクエリは以下の手順で処理されます。
- FROM句でsales_dataテーブルを選択
- GROUP BY句でcategoryごとにデータをグループ化
- HAVING句でSUM(sales)が1000以上のグループをフィルタリング
具体的な例と比較
HAVING句とWHERE句の違いを理解するために、具体的なデータを用いて説明します。
商品カテゴリ | 売上 |
---|---|
食品 | 500 |
食品 | 600 |
家電 | 200 |
家電 | 300 |
書籍 | 100 |
書籍 | 150 |
WHERE句を使用した例
WHERE句を用いると、行レベルでフィルタリングが行われます。
SELECT category, SUM(sales)
FROM sales_data
WHERE sales >= 500
GROUP BY category;
HAVING句を使用した例
HAVING句を用いると、グループレベルでフィルタリングが行われます。
SELECT category, SUM(sales)
FROM sales_data
GROUP BY category
HAVING SUM(sales) >= 1000;
まとめ
HAVING句は、GROUP BY句に続いて使用され、特定の条件に一致するグループだけを選択する強力なツールです。WHERE句が行レベルでフィルタリングするのに対して、HAVING句はグループレベルでフィルタリングします。この違いを理解することで、より効率的なデータ操作が可能になります。
created by Rinker
¥4,554
(2024/11/24 11:00:51時点 Amazon調べ-詳細)
コメント