COUNT и GROUP BY — это ключевые конструкции в SQL для анализа и агрегации данных.
-- Маркетологи запускают в приложении сервиса промо-кампании. Есть две таблицы:
COUNT и GROUP BY — это ключевые конструкции в SQL для анализа и агрегации данных.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
-- Маркетологи запускают в приложении сервиса промо-кампании. Есть две таблицы:
-- campaigns – список кампаний -- - campaign – название кампании -- - action_type – тип кампании: "push" или "banner"
-- communications – лог бэкенда с отправками коммуникаций этих кампаний на пользователей -- - user_id – идентификатор пользователя -- - campaign – название кампании -- - status – статус события: "success" или "error"
-- 1. Изначально в таблице campaigns есть 4 строки:
| -- | campaign | action_type |
|---|---|---|
| -- | promo_dogs | push |
| -- | promo_cats | banner |
| -- | promo_cats | banner |
| -- | promo_rats | push |
-- Еще известно, что: -- кампании promo_dogs и promo_cats были успешно проведены на 100 пользователей и каждый пользователь получил по одной коммуникации, -- а promo_rats только планируется.
-- 1.1 Что выведет запрос:
SELECT campaign, COUNT(*) as rows, COUNT(DISTINCT co.user_id) AS users FROM campaigns AS ca INNER JOIN communications AS co ON ca.campaign = co.campaign GROUP BY ca.campaign AS campaign
-- 1.2 Как изменится ответ, если поменять тип JOIN на LEFT?
Ответ
COUNT и GROUP BY — это ключевые конструкции в SQL для анализа и агрегации данных.
- COUNT — функция, которая подсчитывает количество строк или значений в столбце. Например, чтобы узнать, сколько записей в таблице:
SELECT COUNT(*) FROM employees;
- GROUP BY — оператор, который группирует строки по значению одного или нескольких столбцов. Это позволяет применять агрегатные функции (например, COUNT, SUM, AVG) к каждой группе отдельно.
Пример: подсчитать количество сотрудников в каждом отделе:
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
В результате вы получите список отделов с числом сотрудников в каждом.