Для чего используется оператор GROUP BY в SQL?

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

Ответ

Оператор GROUP BY группирует строки результирующего набора данных по одинаковым значениям в одном или нескольких указанных столбцах. Это позволяет применять агрегатные функции (COUNT, SUM, AVG, MAX, MIN) к каждой группе отдельно, а не ко всей таблице.

Базовый пример:

-- Подсчет количества сотрудников в каждом отделе
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;
Результат: department_id employee_count
10 5
20 8
30 3

Расширенный пример с несколькими полями и агрегацией:

-- Средняя зарплата и общий фонд оплаты по отделам и должностям
SELECT 
    department,
    job_title,
    AVG(salary) AS avg_salary,
    SUM(salary) AS total_salary_budget
FROM employees
GROUP BY department, job_title;

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

  1. В блоке SELECT можно указывать только столбцы из GROUP BY или выражения с агрегатными функциями.
  2. Для фильтрации групп (после агрегации) используется оператор HAVING, а не WHERE.
    -- Найти отделы с более чем 5 сотрудниками
    SELECT department_id, COUNT(*) AS emp_count
    FROM employees
    GROUP BY department_id
    HAVING COUNT(*) > 5;