【SQLServer】HAVING句でGroupByした表に条件指定する

SQLServerに限らず、グループ化した(GroupBy)表に対して条件指定する際は、HAVING句が重宝します。今回はHAVING句の使い方を簡単にここにメモしておきます。

 

HAVING句

HAVING句はGroupByした表に条件を付け加えるときに便利です。

例えば以下のテーブルがあったとします。

商品テーブル
+---------------+------------+
| 分類          | 商品       |
+---------------+------------+
| 家電製品      | テレビ     |
| 家電製品      | 冷蔵庫     |
| 家電製品      | パソコン   |
| 家電製品      | 洗濯機     |
| 食料品        | ウーロン茶 |
| 食料品        | りんご     |
| 食料品        | バナナ     |
| 生活・文化用品 | スーツ     |
| 生活・文化用品 | シャツ     |
| 生活・文化用品 | 靴下       |
| 生活・文化用品 | テーブル   |
| 生活・文化用品 | 椅子       |
+---------------+------------+

 

この表に対して、分類ごとの商品数を出すためにGroup Byをすると以下の通りになります。

SELECT 分類, COUNT(分類) AS カウント FROM 商品テーブル GROUP BY 分類;
+---------------+------------+
| 分類          | カウント   |
+---------------+------------+
| 家電製品      | 4          |
| 食料品        | 3          |
| 生活・文化用品 | 5          |
+---------------+------------+

 

さらにグループ化した表からカウントが4つ以上の分類を取得する際、HAVING句を使わずに実現するには以下のようにサブクエリを使う必要があり、SQLが長くなってしまい面倒です。

SELECT G.* 
FROM (
  SELECT 分類, COUNT(分類) AS カウント FROM 商品テーブル GROUP BY 分類
) AS G 
WHERE 
  G.カウント>= 4
;
+---------------+------------+
| 分類          | カウント   |
+---------------+------------+
| 家電製品      | 4          |
| 生活・文化用品 | 5          |
+---------------+------------+

 

ここでHAVING句を使うことで、サブクエリを使わずにSQLを簡略化することができます

SELECT 分類, COUNT(分類) AS カウント FROM 商品テーブル GROUP BY 分類  HAVING COUNT(分類) >= 4;
+---------------+------------+
| 分類          | カウント   |
+---------------+------------+
| 家電製品      | 4          |
| 生活・文化用品 | 5          |
+---------------+------------+

 

以上です!!



投稿日:2020-10-01    更新日:2020-10-01

[スポンサーリンク]

関連記事
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]