← Все уроки

SQL с нуля. Часть 4: агрегаты, GROUP BY и HAVING

Часть 4 учебника SQL. Агрегатные функции (COUNT, SUM, AVG, MIN, MAX). GROUP BY для группировки данных. HAVING для фильтра агрегатов. Реальные примеры.

Урок курса «SQL с нуля» — открой бесплатной регистрацией
Ниже — план урока. Зарегистрируйся за 30 секунд, чтобы открыть полную теорию и 8 задач с автопроверкой прямо в браузере (PostgreSQL и SQLite с автопроверкой), сохранять прогресс и пройти все 10 частей бесплатно.
Шпаргалка: 5 агрегатных функций COUNT/SUM/AVG/MIN/MAX с примерами вывода и поведением NULL

TL;DR: Агрегатные функции — COUNT (сколько), SUM (сумма), AVG (среднее), MIN/MAX (минимум/максимум). GROUP BY группирует строки по колонке, агрегаты считаются внутри каждой группы. HAVING фильтрует группы (как WHERE для агрегатов). 90% метрик аналитика — это GROUP BY + агрегаты.

В этой части:

Что разберёшь в этом уроке

Частые вопросы

Какие 5 агрегатных функций должен знать аналитик?

Шпаргалка: 5 агрегатных функций COUNT/SUM/AVG/MIN/MAX с примерами вывода и поведением NULL

ФункцияЧто считаетПример
COUNT(*)Количество строкCOUNT(*) AS orders
COUNT(col)Количество не-NULL значенийCOUNT(email)
COUNT(DISTINCT col)Уникальных значенийCOUNT(DISTINCT user_id)
SUM(col)СуммаSUM(amount) AS revenue
AVG(col)СреднееAVG(amount) AS avg_check
MIN(col) / MAX(col)Минимум / МаксимумMAX(created_at)

Как работает GROUP BY?

GROUP BY группирует строки по значению колонки. Внутри каждой группы вычисляются агрегаты.

GROUP BY flow: строки группируются по колонке и схлопываются в агрегат

Анимация: строки схлопываются в группы по country, в каждой считается SUM(amount)

Анимация — следи как строки переходят в свои группы:

GROUP BY animated: строки оседают по странам

Идея:

Что нельзя писать в SELECT при GROUP BY?

Правило: каждая колонка в SELECT должна быть либо в GROUP BY, либо внутри агрегата.

Чем HAVING отличается от WHERE?

Шпаргалка: HAVING vs WHERE — что в каком фильтре можно использовать, порядок выполнения SQL

Анимация: WHERE фильтрует строки до группировки, HAVING — готовые группы после агрегации

Пример:

Чем COUNT(*) отличается от COUNT(col)?

Какие 6 типичных задач аналитика через GROUP BY?

(CASE WHEN разберём в Части 7).

Типичные топ-5 запросов: (1) выручка/день, (2) DAU, (3) средний чек по категориям, (4) топ-10 продуктов, (5) конверсия по каналам.
Free — после регистрации
0 ₽
  • Все 10 уроков курса + 92 интерактивных задач
  • 5 SQL и 5 Python-задач в тренажёре
  • 5 кейсов · 10 метрик · 1 AI-собеседование
Начать бесплатно →
Pro
1 999 ₽/мес
  • Все 576 SQL + 561 Python-задач
  • 627 кейсов · 420 метрик · 698 заданий
  • Безлимит AI-собеседований с разбором
Оформить Pro →