В этом учебном пособии вы узнаете, как использовать функцию AVG в SQL Server (Transact-SQL) с синтаксисом и примерами.
Описание
В SQL Server (Transact-SQL) функция AVG возвращает среднее значение выражения.
Синтаксис
Синтаксис функции AVG в SQL Server (Transact-SQL):
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 может использоваться в следующих версиях SQL Server (Transact-SQL):
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005
Пример с одним полем
Рассмотрим некоторые примеры SQL Server функции AVG, чтобы понять, как использовать функцию AVG в SQL Server (Transact-SQL).
Например, вы можете узнать, как среднее количество всех products, где quantity больше 0. Например:
1 2 3 |
SELECT AVG(quantity) AS "Average Quantity" FROM products WHERE quantity > 0; |
В этом примере функции AVG мы выражению AVG(quantity) указали алиас as "Average Quantity". В результате "Average Quantity" будет отображаться как имя поля при возврате результирующего набора.
Пример использования DISTINCT
Вы можете использовать оператор DISTINCT с функцией AVG. Например, приведенный ниже оператор SQL возвращает среднюю зарплату с уникальными значениями заработной платы, где заработная плата превышает 30 000 долларов в год.
1 2 3 |
SELECT AVG(DISTINCT salary) AS "Average Salary" FROM employees WHERE salary > 30000; |
Если бы были две зарплаты в размере 40 000 долл. в год, то только одно из этих значений использовалось бы в функции AVG.
Пример использования формулы
Выражение, содержащееся в функции AVG, не обязательно должно быть одним полем. Вы также можете использовать формулу. Например, вам может понадобиться средняя комиссия.
1 2 |
SELECT AVG(order_value * 0.10) AS "Average Commission" FROM order_details; |
Пример использования GROUP BY
Вы также можете использовать функцию AVG, чтобы вернуть имя отдела и среднее количество (в соответствующем отделе). Например,
1 2 3 |
SELECT department, AVG(quantity) AS "Average Quantity" FROM products GROUP BY department; |
Поскольку вы указали один столбец в операторе SELECT, который не включены в функцию AVG, то вы должны использовать предложение GROUP BY. Поэтому поле department должно быть указано в операторе GROUP BY.