問題:
列に格納されている数値の平均を計算したい。
例:
私たちのデータベースには、sale
次の列にデータがあります:id
、city
、year
、およびamount
。
id | 都市 | 年 | 金額 |
---|---|---|---|
1 | ロサンゼルス | 2017 | 2345.50 |
2 | シカゴ | 2018 | 1345.46 |
3 | アンナンデール | 2016 | 900.56 |
4 | アンナンデール | 2017 | 23230.22 |
5 | ロサンゼルス | 2018 | 12456.20 |
6 | シカゴ | 2017 | 89000.40 |
7 | アンナンデール | 2018 | 21005.77 |
8 | シカゴ | 2016 | 2300.89 |
都市や年に関係なく、平均売上高を計算しましょう。
解決策:
SELECT AVG(amount) as avg_amount FROM sale;
結果は次のとおりです。
avg_amount |
---|
19073.125000 |
ディスカッション:
列に格納されている数値の平均を計算する場合は、AVG()
を使用して計算できます。 集計関数;引数として、平均を計算する列の名前を取ります。 SELECT
で他の列を指定していない場合 条項では、平均はテーブル内のすべてのレコードについて計算されます。
もちろん、これは集計関数なので、AVG()
グループで使用することもできます。たとえば、都市ごとの平均売上高を求めたい場合は、次のクエリを記述できます:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
各都市の平均が計算されます:
city | 金額 |
---|---|
ロサンゼルス | 7400.850000 |
シカゴ | 30882.250000 |
アンナンデール | 15045.516667 |
さらに、平均を丸める必要がある場合は、AVG()
の結果を渡すことができます。 ROUND()
への関数 :
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;