Агрегатністандарт SQL

AVG

Рахує середнє арифметичне значень із багатьох рядків.

Синтаксис

AVG(<вираз>)

Агрегатна функція: додає значення й ділить на їхню кількість. NULL не рахує ні в сумі, ні в кількості. Результат зазвичай має багато знаків після коми, тож його часто обгортають у ROUND.

Дані для прикладів

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Середня зарплата
SELECT AVG(salary) AS average_salary
FROM employees;
average_salary
1140.0000000000000000
Середня зарплата в кожному відділі
SELECT department,
ROUND(AVG(salary)) AS average_salary
FROM employees
GROUP BY department
ORDER BY department;
departmentaverage_salary
backend1100
design1200
frontend1150
Середній бонус: з NULL і без
SELECT ROUND(AVG(bonus), 2) AS skip_nulls,
ROUND(AVG(COALESCE(bonus, 0)), 2) AS nulls_as_zero
FROM employees;
skip_nullsnulls_as_zero
216.67130.00

Перше ділить суму бонусів на 3 — лише на тих, у кого бонус є. Друге рахує відсутній бонус як 0 і ділить на 5.

Зверни увагу

NULL не рахуються як нуль: середнє з 300, NULL і 150 — це 225, а не 150. Якщо відсутнє значення означає нуль, пиши AVG(COALESCE(bonus, 0)).

Для цілих чисел результат усе одно дробовий і з купою нулів: AVG(salary) дає 1140.0000000000000000. Округли: ROUND(AVG(salary), 2).

Середнє чутливе до викидів: одне замовлення на 10 000 зробить «середній чек» нереальним. Типове значення краще показує медіана: PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY amount).

Схожі функції