Операции группировки

Операции группировки в SQL нужны для того, чтобы объединять строки по какому-то признаку и уже к каждой группе применять агрегирующие функции.


📌 Основное — GROUP BY

  • Синтаксис:

    SELECT колонка_группировки, агрегатная_функция(...)
    FROM таблица
    GROUP BY колонка_группировки;
  • Пример: количество заказов по каждому клиенту:

    SELECT customer_id, COUNT(*) AS order_count
    FROM orders
    GROUP BY customer_id;

📌 Несколько колонок

Можно группировать сразу по нескольким полям:

SELECT department, job_title, AVG(salary) AS avg_salary
FROM employees
GROUP BY department, job_title;

→ Средняя зарплата в разрезе "отдел + должность".


📌 HAVING для фильтрации групп

Фильтрация после группировки (в отличие от WHERE, которое фильтрует строки до неё):

SELECT department, COUNT(*) AS emp_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

→ Показать только те отделы, где больше 5 сотрудников.


📌 Итоговые операции группировки

  1. По одному полю – группируем по одному признаку.

  2. По нескольким полям – создаём более детальные группы.

  3. С подзапросами – можно сначала сгруппировать, потом использовать результат во внешнем запросе.

  4. С HAVING – фильтрация именно сгруппированных данных.


🔑 Разница между агрегированием и группировкой:

  • Агрегатные функции дают одно значение для множества строк.

  • Группировка разбивает данные на группы, к которым можно применить агрегаты.

Last updated

Was this helpful?