Проблем:
Искате да изчислите средната стойност на числата, съхранени в колона.
Пример:
Нашата база данни има таблица с име 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;
Ето резултата:
| ср.сума |
|---|
| 19073.125000 |
Дискусия:
Ако искате да изчислите средната стойност на числовите стойности, съхранени в колона, можете да го направите с помощта на AVG() агрегатна функция; той приема за свой аргумент името на колоната, чиято средна стойност искате да изчислите. Ако не сте посочили други колони в SELECT клауза, средната стойност ще бъде изчислена за всички записи в таблицата.
Разбира се, тъй като това е агрегатна функция, AVG() може да се използва и с групи. Например, ако искаме да намерим средната продажба за град, можем да напишем следната заявка:
SELECT city, AVG(amount) as avg_amount FROM sale GROUP BY city;
Средната стойност се изчислява за всеки град:
| град | количество |
|---|---|
| Лос Анджелис | 7400,850000 |
| Чикаго | 30882.250000 |
| Анандейл | 15045.516667 |
Освен това, ако средната стойност трябва да бъде закръглена, можете да предадете резултата от AVG() функция в ROUND() :
SELECT city, ROUND(AVG(amount), 2) as avg_amount FROM sale GROUP BY city;