Что такое агрегатная функция в SQL?

«Что такое агрегатная функция в SQL?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Агрегатная функция в SQL — это функция, которая выполняет вычисление над набором строк (группой) и возвращает одно итоговое значение. Она всегда используется в контексте выборки данных, часто с оператором GROUP BY.

Основные агрегатные функции SQL:

  • COUNT() — возвращает количество строк в группе.
  • SUM() — возвращает сумму значений числового столбца.
  • AVG() — возвращает среднее арифметическое значений.
  • MAX() / MIN() — возвращает максимальное/минимальное значение.
  • STRING_AGG() (или GROUP_CONCAT() в MySQL) — объединяет строковые значения в одну строку.

Примеры использования:

-- Подсчет общего числа сотрудников
SELECT COUNT(*) AS total_employees FROM employees;

-- Средняя зарплата по отделам
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;

-- Максимальная и минимальная зарплата в компании
SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary FROM employees;

-- Сумма продаж по менеджерам за месяц
SELECT manager_id, SUM(amount) AS total_sales
FROM sales
WHERE sale_date >= '2024-01-01'
GROUP BY manager_id
HAVING SUM(amount) > 10000; -- HAVING фильтрует результаты агрегации

Важно: Агрегатные функции игнорируют значения NULL, за исключением COUNT(*).