Ответ
Агрегатные функции в SQL — это функции, которые выполняют вычисление над набором строк (группой) и возвращают одно результирующее значение. Они используются в сочетании с предложениями SELECT, GROUP BY и HAVING.
Основные агрегатные функции:
COUNT()— возвращает количество строк.COUNT(*)— считает все строки, включая NULL.COUNT(column)— считает строки, где значение вcolumnне NULL.COUNT(DISTINCT column)— считает количество уникальных значений.
SUM(column)— возвращает сумму значений числового столбца.AVG(column)— возвращает среднее арифметическое значений.MAX(column)/MIN(column)— возвращают максимальное/минимальное значение.
Практические примеры использования:
-- 1. Общая статистика по таблице
SELECT
COUNT(*) as total_employees,
AVG(salary) as average_salary,
MAX(salary) as max_salary
FROM employees;
-- 2. Группировка с агрегацией (ключевое использование)
SELECT
department_id,
COUNT(*) as emp_count,
AVG(salary) as avg_salary,
SUM(salary) as total_budget
FROM employees
WHERE hire_date > '2020-01-01' -- Фильтрация ДО группировки
GROUP BY department_id
HAVING AVG(salary) > 50000; -- Фильтрация ПОСЛЕ группировки
-- 3. Поиск дубликатов с помощью COUNT
SELECT email, COUNT(*) as duplicate_count
FROM users
GROUP BY email
HAVING COUNT(*) > 1;
Важные правила:
- Игнорирование NULL: Все агрегатные функции, кроме
COUNT(*), игнорируют значения NULL. - WHERE vs HAVING:
WHEREфильтрует строки до группировки,HAVINGфильтрует результаты после группировки. - Группировка: При использовании
GROUP BYвSELECTможно указывать только столбцы для группировки и агрегатные функции.