Проблем:
Искате да изчислите средната стойност на числата, съхранени в колона.
Пример:
Нашата база данни има таблица с име 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;