カテゴリ: 基本情報技術者試験 更新日: 2025/11/01

HAVING句とは?初心者でもわかるデータベース集計の条件指定を徹底解説!

HAVING句
HAVING句

先生と生徒の会話形式で理解しよう

生徒

「先生、SQLのHAVING句(ハビングク)って何に使うんですか?WHERE句(ウェアク)とどう違うんですか?」

先生

「良い質問ですね。HAVING句は、GROUP BY句(グループバイク)でグループ化した結果に対して、さらに条件をつけるときに使う構文なんです。WHERE句ではグループ化前のデータを絞り込み、HAVING句ではグループ化後の集計結果を絞り込むんですよ。」

生徒

「なるほど!つまりHAVING句は集計が終わったあとに使うフィルタみたいなものなんですね?」

先生

「そうです。その通りです。では、HAVING句の使い方を具体的に見ていきましょう。」

1. HAVING句(ハビングク)とは?

1. HAVING句(ハビングク)とは?
1. HAVING句(ハビングク)とは?

HAVING句(読み方:ハビングク)は、SQL(エスキューエル/Structured Query Language)の集計処理で使用される条件指定の構文です。GROUP BY句(グループバイク)でデータをグループ化したあと、その集計結果に対して条件を設定するときに使います。

たとえば、「部署ごとの平均給与を求めて、平均給与が30万円以上の部署だけを表示したい」といったケースでHAVING句が活躍します。WHERE句ではこのような集計後の条件は指定できないため、HAVING句が必要になります。

2. HAVING句の基本構文

2. HAVING句の基本構文
2. HAVING句の基本構文

HAVING句の基本的な書き方は次のとおりです。

SELECT 列名, 集合関数(列名)
FROM 表名
GROUP BY 列名
HAVING 条件;

この構文のポイントは、「GROUP BYでグループ化したあとにHAVINGで条件を設定する」という順番です。HAVINGは常にGROUP BYのあとに記述します。

3. HAVING句の具体例

3. HAVING句の具体例
3. HAVING句の具体例

たとえば、社員テーブル(employees)から部署ごとの平均給与を求め、平均が30万円以上の部署だけを表示したい場合は、次のように書きます。

SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) >= 300000;

このSQL文では、AVG(エーブイジー)という集合関数を使って部署ごとの平均給与を計算しています。そしてHAVING句で「平均給与が30万円以上」という条件を指定しています。

4. WHERE句との違い

4. WHERE句との違い
4. WHERE句との違い

HAVING句とWHERE句の違いは、条件を適用するタイミングにあります。

  • WHERE句:グループ化する前に行データを絞り込む
  • HAVING句:グループ化したあとに集計結果を絞り込む

例えば「営業部だけを対象にして、その中で平均給与が30万円以上の部署を出したい」という場合は、WHERE句とHAVING句を組み合わせて使います。

SELECT department, AVG(salary)
FROM employees
WHERE department = '営業部'
GROUP BY department
HAVING AVG(salary) >= 300000;

このように、WHEREでグループ化前のデータを制限し、HAVINGでグループ化後の条件を指定します。

5. HAVING句で使える主な集合関数

5. HAVING句で使える主な集合関数
5. HAVING句で使える主な集合関数

HAVING句では、次のような集合関数(シュウゴウカンスウ)を条件に使うことが多いです。

  • COUNT():件数を数える
  • SUM():合計を求める
  • AVG():平均を求める
  • MAX():最大値を求める
  • MIN():最小値を求める

たとえば「社員数が10人以上の部署だけを表示する」場合は次のようになります。

SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) >= 10;

このようにHAVING句は、集計した結果に対して柔軟に条件を設定できます。

6. HAVING句とORDER BY句の併用

6. HAVING句とORDER BY句の併用
6. HAVING句とORDER BY句の併用

HAVING句で条件を絞り込んだあと、結果を並び替えるにはORDER BY句(オーダーバイク)を使います。例えば、平均給与が30万円以上の部署を高い順に並べたいときは次のように書きます。

SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) >= 300000
ORDER BY AVG(salary) DESC;

このように、HAVING句で条件を指定した後にORDER BYで並び替えると、結果がより見やすくなります。

7. HAVING句が使われる実務シーン

7. HAVING句が使われる実務シーン
7. HAVING句が使われる実務シーン

HAVING句は、売上や社員数などの「集計データを分析」するときによく使われます。例えば、月ごとの売上データをグループ化して、「売上が100万円以上の月だけを表示」したい場合などです。

SELECT month, SUM(sales)
FROM sales_data
GROUP BY month
HAVING SUM(sales) >= 1000000;

このSQL文を使うことで、条件を満たした集計結果だけを表示でき、ビジネス分析やレポート作成で大変役立ちます。

8. HAVING句の注意点

8. HAVING句の注意点
8. HAVING句の注意点

HAVING句では、基本的に集合関数を使った条件を指定します。個々の行データに対する条件はWHERE句で指定しなければなりません。間違ってHAVING句の中で個別データの条件を指定すると、エラーや意図しない結果になることがあります。

また、HAVING句はSQLの実行順序の中で、GROUP BY句の後に処理されます。したがって、HAVING句を使うときは、まずどの列でグループ化しているのかをしっかり確認しておきましょう。

9. HAVING句の歴史と今後の活用

9. HAVING句の歴史と今後の活用
9. HAVING句の歴史と今後の活用

HAVING句は、SQLの標準仕様として古くから存在する構文で、リレーショナルデータベース(RDB/アールディービー)の基本要素のひとつです。現在では、MySQL(マイエスキューエル)、PostgreSQL(ポストグレスキューエル)、Oracle(オラクル)、SQL Server(エスキューエルサーバー)など、あらゆるデータベースで利用できます。

さらに、クラウド環境でもHAVING句は欠かせません。Google BigQuery(グーグルビッグクエリ)やAmazon Redshift(アマゾンレッドシフト)などの分析サービスでも同じ構文が使えます。つまり、HAVING句を理解しておくことは、データベースを扱う上での基礎力を高め、実務でも役立つ重要なスキルといえるでしょう。

カテゴリの一覧へ
新着記事
New1
基本情報技術者試験
クライアントサーバシステムとは?初心者でもわかるネットワークの基本構成をやさしく解説
New2
基本情報技術者試験
分散処理とは?初心者でもわかるコンピュータの処理方式をやさしく解説
New3
情報セキュリティマネジメント試験
ブラックリストとは何かをやさしく解説!初心者でもわかる仕組みと活用例
New4
基本情報技術者試験
集中処理とは?初心者でもわかるコンピュータ処理方式の基本用語をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
FTP
220
FTPとは?初心者でもわかるファイル転送プロトコルの基本と仕組みを徹底解説!
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
212
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
URL
187
URLとは?初心者でもわかるWebリンクの仕組みと役割をやさしく解説!
No.5
Java&Spring記事人気No5
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.6
Java&Spring記事人気No6
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
基本情報技術者試験
スキーマ(Schema)とは?データベースの基本構造を初心者向けに解説
No.8
Java&Spring記事人気No8
基本情報技術者試験
ハブとは?初心者でもわかるネットワーク接続装置の基本と仕組み