Что такое агрегирующие функции в SQL и как они работают с GROUP BY?

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

Ответ

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

Синтаксис с GROUP BY:

SELECT 
    department_id,
    COUNT(*) AS employee_count,
    AVG(salary) AS average_salary,
    MAX(salary) AS top_salary
FROM employees
GROUP BY department_id;

Этот запрос группирует сотрудников по отделам и для каждого отдела вычисляет количество сотрудников, среднюю и максимальную зарплату.

Важные правила:

  1. SELECT-список: Все столбцы в SELECT, не являющиеся аргументами агрегирующих функций, должны быть указаны в GROUP BY.
  2. Фильтрация групп: Для фильтрации по результату агрегации (например, average_salary > 50000) используется HAVING, а не WHERE.
  3. Игнорирование NULL: SUM(), AVG(), MAX(), MIN() игнорируют NULL. COUNT(column_name) также их игнорирует, в отличие от COUNT(*).

Почему это важно: Использование GROUP BY с агрегирующими функциями — основа для построения аналитических отчетов и сводных таблиц в реляционных базах данных.