レコードの値の平均値を求める
レコードの値の平均値を求めるSQLを紹介します。
書式
select AVG((平均値を求める列名)) from (テーブル名)
の書式でAVG関数を呼び出します。
特定の条件に一致するレコードの平均を求める場合は
select AVG((平均値を求める列名)) from (テーブル名) where (条件式)
特定の列でグループにまとめて集計する場合は
select AVG((平均値を求める列名)) from (テーブル名) group by (列名)
とします。
例1:テーブルのすべてのレコードの平均値を取得する
products テーブル
id | name | price | category |
1 | Penguin | 250 | Bird |
2 | Bear | 1050 | Mammal |
3 | Duck | 150 | Bird |
4 | Camel | 550 | Mammal |
5 | Owl | 185 | Bird |
6 | Whale | 880 | Mammal |
上記のテーブルで"price"の平均を求める場合は以下のSQLを実行します。
select AVG(price) from products
結果
結果は以下となります。
補足
列名を付ける場合のSQLは以下になります。
select AVG(price) as average from products
select agerage=AVG(price) from products
結果
結果は以下となります。
例2:条件に一致したレコードの平均値を取得する
products テーブル
id | name | price | category |
1 | Penguin | 250 | Bird |
2 | Bear | 1050 | Mammal |
3 | Duck | 150 | Bird |
4 | Camel | 550 | Mammal |
5 | Owl | 185 | Bird |
6 | Whale | 880 | Mammal |
上記のテーブルでcategoryが"Mammal"の平均を求める場合は以下のSQLを実行します。
select AVG(price) from products where category='Mammal'
結果
結果は以下となります。
補足
列名を付ける場合のSQLは以下になります。
select AVG(price) as average from products where category='Mammal'
または
select agerage=AVG(price) from products where category='Mammal'
結果
結果は以下となります。
例3:group by を用いる場合
group by を用いると指定した列ごとのグループにまとめて、集計することができます。
products テーブル
id | name | price | category |
1 | Penguin | 250 | Bird |
2 | Bear | 1050 | Mammal |
3 | Duck | 150 | Bird |
4 | Camel | 550 | Mammal |
5 | Owl | 185 | Bird |
6 | Whale | 880 | Mammal |
上記のテーブルでcategoryごとの平均を求める場合は以下のSQLを実行します。
select category,AVG(price) as average from products group by category
結果
結果は以下となります。
category | average |
Bird | 195.000000 |
Mammal | 826.666666 |
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。