Агрегации¶
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, но после группировки.