Перейти к содержанию

Агрегации

SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;

COUNT, SUM, AVG, MIN, MAX — агрегатные функции

GROUP BY — группировка

HAVING — фильтр по агрегатам

Порядок ключевых слов в SQL-запросе:

1.  SELECT — выбираем поля  
2.  FROM — указываем таблицу(ы)  
3.  JOIN — объединение таблиц (если нужно)  
4.  WHERE — фильтрация строк  
5.  GROUP BY — группировка строк  
6.  HAVING — фильтрация уже сгруппированных данных  
7.  ORDER BY — сортировка  
8.  LIMIT — ограничение количества результатов

Агрегатные функции обрабатывают несколько строк и возвращают одно значение.

Основные функции

Функция Назначение Пример
COUNT(*) Считает все строки SELECT COUNT(*) FROM users;
COUNT(column) Считает строки, где column не NULL SELECT COUNT(age) FROM users;
SUM(column) Суммирует значения SELECT SUM(salary) FROM employees;
AVG(column) Среднее значение SELECT AVG(age) FROM users;
MIN(column) Минимальное значение SELECT MIN(created_at) FROM orders;
MAX(column) Максимальное значение SELECT MAX(score) FROM tests;

Пример с GROUP BY

SELECT department, COUNT(*) AS total
FROM employees
GROUP BY department;

📌 Здесь COUNT() применяется к каждой группе* — по департаменту.

Пример с HAVING

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;

HAVING фильтрует группы, аналогично WHERE, но после группировки.