広告スペース(バナー)
🗄️SQL レッスン
SELECTの基礎6
データ操作とサブクエリ5
構文の基本を深める7
応用的な条件・結合7
検索とテーブル操作の応用6
高度なクエリ技法6
集計とデータ整合性6
仕上げの機能と応用6
レッスン 17 / 50

HAVING句で集計結果を絞り込む

このレッスンでは、HAVING句を使った集計結果の絞り込みを学び、WHEREとの違いを理解することを目標にします。「SQL HAVING 使い方」「SQL WHERE HAVING 違い」で調べている方向けです。

WHEREは集計前の行を絞り込みますが、HAVINGGROUP BYで集計した「あとの結果」を絞り込みます。「3件以上ある班だけ表示」のような条件に使います。

サンプルコードでは、GROUP BY class_idで集計したあと、HAVING COUNT(*) >= 2という条件で「人数が2人以上のクラスだけ」を絞り込んでいます。集計関数の結果に対する条件はWHEREではなくHAVINGで書く必要がある点がポイントです。

初心者がよくつまずくのが、WHEREの中にCOUNT()のような集計関数を書いてしまい、エラーになることです。WHEREはGROUP BYより先に、HAVINGはGROUP BYより後に評価されるという実行順序の違いを理解しておくと、「なぜWHEREではCOUNT()の条件が書けないのか」という疑問がすっきり解消します。

「一定件数以上のグループだけを見たい」という要件は、売上分析やアクセス集計など実務のレポート作成で頻繁に登場します。WHEREとHAVINGを正しく使い分けられることは、集計クエリを書くうえで欠かせないスキルです。

SQL
OUTPUT / 実行結果

💡 初回実行時はSQLエンジンの読み込みに数秒かかります。

🎯
ここまでできればゴール達成!
集計した後の結果を、さらに条件で絞り込めるようになります。
広告スペース(バナー)
広告スペース(記事内)