SQL Server 2019でGROUP BYとHAVINGを使ってグループ化の条件を指定する

環境
Windows 10 Home 64bit
Microsoft SQL Server 2019

構文

SELECT 列名 FROM テーブル名
WHERE 条件式
GROUP BY 列名
HAVING 条件式

キーワードについて
WHERE
条件で抽出した結果をGROUP BYでグループ化します
HAVING
GROUP BYでグループ化したあとにHAVINGの条件で抽出します

使用例1
グループ化したレコードで件数指定します

SELECT USERNAME,COUNT(USERNAME) FROM USER_TBL 
WHERE CITY = '東京' 
GROUP BY USERNAME 
HAVING COUNT(*) > 1;

説明
「GROUP BY USERNAME」を使ってユーザー名前(USERNAME)ごとにグループ化します。
「HAVING COUNT(*) > 1」でグループ化したユーザー名前(USERNAME)の件数が1件より大きいレコードを抽出します。

使用例2
グループ化したレコードで合計指定します

SELECT USERNAME,SUM(SCRORE) FROM USER_TBL
GROUP BY USERNAME
HAVING SUM(SCRORE) > 95;

説明

「GROUP BY USERNAME」を使ってユーザー名前(USERNAME)ごとにグループ化します。
「HAVING SUM(SCRORE) > 95」で点数(SCORE)合計が95以上を抽出します。

 

SQLServer

Posted by arkgame