問題:
列に格納されている数値の平均を計算したい。
例:
私たちのデータベースには、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;