SQL Server GROUP BYした結果に条件を指定する

SQL Server GROUP BYした結果に条件を指定する

SQL Serverで、GROUP BYした結果に条件を指定する手順を記述してます。

環境

  • OS windows10 pro
  • SQL server2017 Version 14.0.3223.3
  • SSMS 18.7.1

条件を指定

平GROUP BYした結果に条件を指定するには、「HAVING」を使用します。

HAVING 条件

実際に、以下のテーブルのカラム「age」の平均値をnameをグループ化して、30以上のものだけ取得してみます。
ここでは「Test」というテーブルを使用してます。

「HAVING」を使用します。

SELECT name, AVG([age]) as ave
FROM [dbo].[Test]
GROUP BY [name]
HAVING AVG(CAST([age] as DECIMAL)) > 30

実行結果

平均値が30以上のものだけ取得されていることが確認できます。

where句を使用するとエラーになります。

SELECT name, AVG([age]) as ave
FROM [dbo].[Test]
where AVG(CAST([age] as DECIMAL)) > 30
GROUP BY [name]

メッセージ 147、レベル 15、状態 1、行 3
集計が HAVING 句または選択リスト内のサブクエリにある場合、および集計する列が外部参照の場合にだけ、WHERE 句に集計を含めることができます。