Слайс

Аналитический тренажер

JOIN и GROUP BY в SQL: как считать метрики по связанным таблицам?

В реальных аналитических задачах часто нужно не просто соединить таблицы, а сразу посчитать метрики по объединённым данным. Для этого JOIN используют вместе с GROUP BY.
Общий шаблон запроса:
SELECT
    a.group_column,
    COUNT(*) AS rows_count,
    SUM(b.amount) AS total_amount
FROM table_a AS a
JOIN table_b AS b
    ON a.id = b.id
GROUP BY a.group_column
Так можно получать метрики по пользователям, категориям, каналам, странам, периодам или другим признакам. Часто в таких запросах используют несколько агрегатных функций сразу:
SELECT
    group_column,
    COUNT(DISTINCT object_id) AS objects_count,
    SUM(amount) AS total_amount,
    AVG(amount) AS average_amount
FROM table_name
GROUP BY group_column
Важно следить за уровнем детализации после соединения таблиц. JOIN может увеличить количество строк, если одной записи из первой таблицы соответствует несколько записей из второй. Поэтому для подсчёта объектов часто используется:
COUNT(DISTINCT object_id)
а не просто:
COUNT(*)
JOIN + GROUP BY - это основа большинства аналитических SQL-запросов. Такой подход позволяет переходить от сырых таблиц к понятным бизнес-метрикам.
Открыть тренажер