В этом учебном пособии вы узнаете, как использовать avg функцию в PostgreSQL с синтаксисом и примерами.
Описание
Функция avg PostgreSQL возвращает среднее значение выражения.
Синтаксис
Синтаксис функции avg в PostgreSQL:
FROM tables
[WHERE conditions];
Или синтаксис функции avg при группировании результатов по одному или нескольким столбцам:
avg(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2,... expression_n;
Параметры или аргументы
- expression1, expression2,... expression_n
- Выражения, которые не заключены в функцию avg и должны быть включены в оператор GROUP BY в конце SQL-запроса.
- aggregate_expression
- Это столбец или выражение, которое будет усреднено.
- tables
- Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
- WHERE conditions
- Необязательный. Это условия, которые должны быть соблюдены для выбора записей.
Применение
Функция avg может использоваться в следующих версиях PostgreSQL:
- PostgreSQL 11, PostgreSQL 10, PostgreSQL 9.6, PostgreSQL 9.5, PostgreSQL 9.4, PostgreSQL 9.3, PostgreSQL 9.2, PostgreSQL 9.1, PostgreSQL 9.0, PostgreSQL 8.4
Пример - с одним выражением
Рассмотрим некоторые примеры функций avg, чтобы понять, как использовать функцию avg в PostgreSQL.
Например, вам может быть интересно узнать, какое среднее количество поля quantity в таблице inventory.
1 2 |
SELECT avg(quantity) AS "Average Quantity" FROM inventory; |
В этом примере функции avg мы использовали псевдоним avg(quantity) как "Average Quantity". В результате, "Average Quantity" будет отображаться как имя поля при возвращении набора результатов.
Пример - использование DISTINCT
Вы можете использовать оператор DISTINCT в функции avg. Например, приведенный ниже оператор SQL возвращает среднее quantity значение уникальных quantity, где product_type равно 'Hardware'.
1 2 3 |
SELECT avg(DISTINCT quantity) AS "Average Quantity" FROM inventory WHERE product_type = 'Hardware'; |
Если бы было две quantity равных 25, только одно из этих значений было бы использовано в функции avg.
Пример - использование формулы
expression, содержащееся в функции avg, необязательно должно быть одним полем. Вы также можете использовать формулу. Например, вам может потребоваться "Average Commission".
1 2 |
SELECT avg(sales * 0.10) AS "Average Commission" FROM orders; |
Пример - использование GROUP BY
Вы также можете использовать функцию avg для возврата department (отдел) и "Average Quantity" (среднего количества в соответствующем отделе). Например,
1 2 3 |
SELECT department, avg(quantity) AS "Average Quantity" FROM inventory GROUP BY department; |
Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функции avg, необходимо использовать оператор GROUP BY. Поэтому поле department должно быть указано в разделе GROUP BY.