В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию AVG с синтаксисом и примерами.
Описание
Oracle/PLSQL функция AVG возвращает среднее значение выражения.
Синтаксис
Синтаксис Oracle/PLSQL функции AVG:
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 возвращает numeric значение.
Применение
Функцию AVG можно использовать в следующих версиях Oracle/PLSQL:
- Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i
Пример с одним полем
Рассмотрим несколько примеров функции AVG и изучим, как использовать функцию AVG в Oracle/PLSQL.
Например, вы можете узнать, какая средняя заработная плата всех сотрудников, чья зарплата превышает 18000$ в год.
1 2 3 |
SELECT AVG(salary) AS "Avg Salary" FROM employees WHERE salary > 18000; |
В этом примере функции AVG мы назвали выражение AVG(salary) как "Avg Salary". В результате, "Avg Salary" будет отображаться как имя поля при возврате результирующего набора.
Пример - использование DISTINCT
Вы можете использовать оператор DISTINCT в функции AVG. Например, приведенный ниже оператор SQL возвращает среднюю зарплату с уникальными значениями заработной платы, где заработная плата превышает 18000$ в год.
В приведенном примере рассчитывается средняя зарплата служащих из таблицы employees.
1 2 3 |
SELECT AVG(DISTINCT salary) AS "Avg Salary" FROM employees WHERE salary > 18000; |
Пример - использование формулы
Выражение, содержащееся в функции AVG, не обязательно должно быть одним полем. Вы также можете использовать формулу. Например, вам может потребоваться средняя комиссия.
1 2 |
SELECT AVG(sales * 0.10) AS "Average Commission" FROM orders; |
Пример - использование GROUP BY
Вы также можете использовать функцию AVG для получения названия отдела и средних продаж (в соответствующем отделе).
Например.
1 2 3 |
SELECT department, AVG(sales) AS "Avg sales" FROM order_details GROUP BY department; |
Поскольку в вашем операторе SELECT указан один столбец, который не инкапсулирован в функции AVG, вы должны использовать оператор GROUP BY. Поэтому поле department должно быть указано в операторе GROUP BY.