AVG SQL
Функция SQL AVG необходимо в случае, если требуется вычислить среднее значение числового столбца в таблице. Среднее значение функция AVG() в SQL вычисляет среднее значение столбца путем суммирования всех значений записей столбца и деления на количество записей.
AVG SQL Примеры
Рассмотрим пример. Допустим в таблице Price есть столбец Price_unit. В этой таблице содержатся 5 записей. Значения полей столбца Price_unit 3, 5, 14, 38 и 83.
Выполним запрос, возвращающий среднее значение столбца Price_unit
SELECT AVG(Price_unit) AS PriceAvg FROM Price;
Результатом выполнения данного запроса будет
Как найти среднее значение в sql
Для этого в PostgreSQL применяется функция AVG() . Она рассчитывает среднее значение по переданному в качестве аргумента столбцу. Например:
-- Посчитаем среднюю сумму заказа SELECT AVG(sum) FROM orders; -- avg -- -------------------- -- 149.17162555104319 -- (1 row)
Агрегатные функции — Основы SQL
Язык SQL — не просто язык запросов, а мощный инструмент, похожий на язык программирования, хотя и очень специфичный. Как и в других языках, здесь есть функции, незаменимые в конкретных задачах: найти сумму или среднее по столбцу, минимум или максимум. Такие функции называются агрегатными.
Чтобы вызвать агрегатную функцию, нужно написать ее имя и затем в круглых скобках передать аргументы — переменные, над которыми будут совершаться действия. В этом уроке мы поближе познакомимся с агрегатными функциями и их аргументами.
Функция COUNT
Ранее в курсе мы научились выбирать все записи из таблицы. Например, мы можем выбрать все записи из таблицы пользователей с помощью такого запроса:
SELECT * FROM users;
Запрос вернет нам много строк, но точное их количество мы не знаем. Чтобы это выяснить, можно использовать функцию COUNT — она возвращает количество записей в выборке.
Ответить на вопрос «А сколько записей содержится в таблице users ?» можно с помощью такого запроса:
SELECT COUNT(*) FROM users;
Этот запрос выведет нам ровно одно число — количество строк в запросе. Это равносильно количеству пользователей в нашей базе, потому что в этой таблице хранится информация об уникальных пользователях.
В качестве аргумента мы передали символ * , который заменяет все поля таблицы.
Еще в качестве аргумента мы можем передать имя поля. В этом случае функция вернет нам количество строк, в которых поле НЕ равно NULL . Выполним такой запрос:
SELECT COUNT(id) FROM users;
Этот запрос также вернул значение 99 — это количество строк, id которых не равен NULL .
Подадим в качестве аргумента поле email_confirmed :
SELECT COUNT(email_confirmed) FROM users;
Этот запрос вернул 0 , потому что в таблице поле email_confirmed не содержит никаких данных.
Обратите внимание, что COUNT возвращает количество записей в запросе, а не в таблице:
SELECT COUNT(*) FROM users WHERE gender = 'female';
Этот запрос вернет количество девушек среди всех пользователей.
Функция SUM
Функция SUM возвращает сумму всех значений:
SELECT SUM(spent_minutes) FROM course_reviews;
В этом запросе мы нашли суммарное время, проведенное всеми пользователями на онлайн-курсах.
В качестве аргумента в функцию SUM нужно передать числовое поле. Если передать поле, в котором хранятся строки или даты, то запрос вернет ошибку. Также, не получится передать в функцию символ * , как мы это делали с функцией COUNT :
-- Передадим поле с датами создания — запрос вернет ошибку SELECT SUM(created_at) FROM course_reviews; -- Передадим символ '*' — запрос завершится с ошибкой SELECT SUM(*) FROM course_reviews;
Функция AVG
Чтобы найти среднее арифметическое всех значений, нужно воспользоваться функцией AVG (average — среднее).
В таблице ниже вы увидите, как это происходит:
Работает функция так же как и SUM . В качестве аргумента нужно передать числовое поле.
Найдем среднее время, проведенное пользователем с id = 9 на площадке онлайн-школы:
SELECT AVG(spent_minutes) FROM course_reviews WHERE user_id = 9;
Функции MAX и MIN
Функции MAX и MIN позволяют найти максимальное и минимальное значение соответственно. Найдем максимальное время прохождения курса:
SELECT MAX(spent_minutes) FROM course_reviews;
А теперь найдем минимальное время:
SELECT MIN(spent_minutes) FROM course_reviews;
В качестве аргументов в функции MAX и MIN можно передавать поля числовых типов, а так же даты и строки. Для строк минимальное и максимальное значения — это первая и последняя строки, упорядоченные по алфавиту:
SELECT MIN(username) FROM users;
Запрос с функцией MIN выведет пользователя Abelardo58 , потому что он идет первым по алфавиту.
Рассмотрим еще один пример:
SELECT MAX(username) FROM users;
Запрос с функцией MAX выведет пользователя Zoey24 , потому что он идет по алфавиту последним.
Выводы
В этом уроке мы познакомились с агрегатными функциями:
- COUNT — позволяет подсчитать количество строк
- SUM — позволяет найти сумму чисел
- AVG — позволяет подсчитать среднее арифметическое
- MAX — возвращает максимальное значение численного поля или последнюю строку по алфавиту
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Функция SQL AVG()
Оператор SQL AVG() — Функция возвращающая среднее значение столбца. Применима только для числовых столбцов!
Функция SQL AVG() имеет следующий синтаксис:
AVG(column_name)
Примеры оператора SQL AVG: Имеется следующая таблица Universities :
| ID | UniversityName | Students | Faculties | Professores | Location | Site |
| 1 | Perm State National Research University | 12400 | 12 | 1229 | Perm | psu.ru |
| 2 | Saint Petersburg State University | 21300 | 24 | 13126 | Saint-Petersburg | spbu.ru |
| 3 | Novosibirsk State University | 7200 | 13 | 1527 | Novosibirsk | nsu.ru |
| 4 | Moscow State University | 35100 | 39 | 14358 | Moscow | msu.ru |
| 5 | Higher School of Economics | 20335 | 12 | 1615 | Moscow | hse.ru |
| 6 | Ural Federal University | 57000 | 19 | 5640 | Yekaterinburg | urfu.ru |
| 7 | National Research Nuclear University | 8600 | 10 | 936 | Moscow | mephi.ru |
Пример 1. Используя оператор SQL AVG найти среднее число студентов (Students) всех университетов:
SELECT AVG(Students) FROM Universities
Пример 2. Используя оператор SQL AVG найти среднее число факультетов (Faculties) в университетах Москвы:
SELECT AVG(Faculties) FROM Univetsities WHERE Location = 'Moscow'
