SQL Server 平均値を取得する
- 作成日 2022.09.08
- Sql Server
- SQL Server
SQL Serverで、平均値を取得する手順を記述してます。
環境
- OS windows10 pro
- SQL server2017 Version 14.0.3223.3
- SSMS 18.7.1
平均値を取得
平均値を取得するには、「AVG」を使用します。
SELECT AVG(カラム名)
FROM テーブル名
実際に、以下のテーブルのカラム「age」の平均値を取得してみます。
ここでは「Test」というテーブルを使用してます。
「AVG」を使用します。
SELECT AVG([age]) as ave
FROM [dbo].[Test]
実行結果
平均値が取得されていることが確認できます。
NULLがあった場合
レコードに「NULL」が含まれていた場合は、結果が少し変わります。
わかりやすくするため、合計値とレコード数も表示して「AVG」を実行してみます。
SELECT AVG([age]) as ave , sum([age]) as sum , count([age]) as count
FROM [dbo].[Test]
実行結果を見ると、10ではなく9でカウントして、演算していることがわかります。
※少数まで結果で取得する場合は、後述
9ではなく10で実行したい場合は「ISNULL」を使用して、NULLを0に変換して実行します。
SELECT AVG(ISNULL([age],0)) as ave , sum(ISNULL([age],0)) as sum , count(ISNULL([age],0)) as count
FROM [dbo].[Test]
実行結果
少数に変換
また、上記のように9でわると結果が少数になるので、少数まで表示したい場合は型を変換します。
SELECT AVG(CAST([age] as DECIMAL)) as ave
FROM [dbo].[Test]
実行結果
少数まで取得されていることが確認できます。
各データごとに平均値を求める
group by すれば、各データごとの平均値を求めることが可能です。
以下のテーブルをnameごとに平均値を求めてみます。
group byを実行します。
SELECT name, AVG(CAST([age] as DECIMAL)) as ave
FROM [dbo].[Test]
group by [name]
実行結果を確認すると、nameの値ごとに平均値が取得されていることが確認できます。
-
前の記事
SQL Server 日付から月だけを取得する 2022.09.08
-
次の記事
Linux wgetでファイルの名前を指定してダウンロードする 2022.09.08
コメントを書く