SQL HAVING句の使い方【実行コード付き】
【記事作成者】 酒井 裕麻 (株式会社Bistro 代表取締役社長)
本記事の内容
データ集計時に欠かせないSQLですが、大容量のデータを集計する際は集計コストの軽量化が重要です。
集計コストの軽量化を実現する際に、よく使用される「HAVING句」の使い方を紹介します。
HAVING句は、グループ化したデータに対して条件を設定するときに使う関数です。
この記事では、HAVING句の基本的な使い方から、WHERE句との違い、実際の活用シーンまでをわかりやすく紹介します。
SQLの集計処理を効率化し、より軽量でスマートなデータ分析に役立てていきましょう。
SQL HAVING句とは?
HAVING句(ハビング句)は、GROUP BYでグループ化した後の集計結果に対して条件を指定するための関数です。
例えば購入データのログに対して、合計購入金額が10,000円以上のユーザーに、データを限定したい場合について考えます。
HAVING句を使わない場合、ユーザーごとの合計購入金額を集計して、その後10,000円以上の購入が行われているユーザーに限定する処理を行う必要があります。
SQL HAVING句を使わない場合
WITH USER_PURCHASE_AMOUNT AS ( SELECT USER_ID , SUM(PURCHASE_AMOUNT) AS TOTAL_AMOUNT FROM PURCHASE_LOG GROUP BY USER_ID ) SELECT USER_ID FROM USER_PURCHASE_AMOUNT WHERE TOTAL_AMOUNT >= 100000
一方でHAVING句を使うことで、SUM()などのGROUP BYが必要な集計関数の結果に対して、集計条件を適用することができます。
実際にHAVING句を使用したSQLの例をもとに確認しましょう。
SQL HAVING句を使う場合
SELECT USER_ID , SUM(PURCHASE_AMOUNT) AS TOTAL_AMOUNT FROM PURCHASE_LOG GROUP BY USER_ID HAVING TOTAL_AMOUNT >= 100000
このようにHAVING句を使用することで、SQL自体も簡略化でき、WITH句を使用しないでもSQLを記載することができました。
SQL HAVING句のメリット
GROUP化した集計関数に対して、集計条件をかけることができるSQL HAVING句を使うことは、大容量データ集計においてメリットをもたらします。
SQLの簡略化(シンプル)
例に挙げたSQLでは、記載するSQLが短くなり、SQLをシンプルに保てています。
SQLをシンプルにすることで、SQLを誰かに渡した際に、読みやすいSQLとなり、認識齟齬が発生しにくくなります。
集計処理の軽量化
SQL HAVING句を使わない場合の処理は、以下のように記載できます。
- 各ユーザーの合計購入数を集計
- 集計結果を1度ネストに保持
- ネストから集計条件に合うデータを抜き出す
一方で、SQL HAVING句を使用した場合の処理は、以下のように記載できます。
- 各ユーザーの合計購入数を集計
- 結果から集計条件に合うデータを抜き出す
このようにHAVING句を使用することで集計時の処理工程が1つ少なくなることがわかりました。
処理工程が少なくなる = 集計処理が軽量化されるので、大容量の集計においては重宝されます。
大容量のデータを使用する際は、集計処理の軽量化が非常に重要な課題となります。
HAVING句を使用することでなるべく軽量化した状態での集計を行うように心がけましょう。
参照
Microsoft Ignite : COUNT (Transact-SQL) – SQL Server | Microsoft Learn
SQL以外にも様々なデータに関する知識を公開中 : Bistro Data School – 株式会社Bistro
投稿者プロフィール

- 酒井 裕麻株式会社Bistro - 代表取締役社長
-
慶應義塾大学 理工学部 物理情報工学科 卒業。
外資系広告代理店 McCann Erickson に新卒で入社し、アナリストとしてマーケティングリサーチからマーケティングミックスモデリング(MMM)まで幅広い分析業務に従事。
その後独立し、データマーケティングカンパニー 株式会社Bistro を設立。
現在は大手通信キャリア、銀行、IT企業、広告代理店など幅広いクライアントに対し、データ分析基盤の構築からBI導入、広告効果分析・最適化まで、データ活用に関する包括的な支援を行っている。
最新の投稿
- 2025年11月13日SQLSQLの基本 – まずはこれだけ覚えよう【初心者向け基礎ガイド】
- 2025年11月11日RRで行うハッシュ化【実行コード付き】
- 2025年10月29日SQLSQL HAVING句の使い方【実行コード付き】
- 2025年10月23日DashboardGoogleトレンド急上昇ワード分析【ダッシュボードを無料公開中】
📩 データに関するお問い合わせはお気軽にどうぞ
貴社の課題に合わせた最適なデータ活用をご提案します。
ご相談は無料です。お気軽にお問い合わせフォームよりご連絡ください。
このコンテンツをシェアする
