SELECT, WHERE, GROUP BY
Агрегируйте данные кампаний
«SELECT, WHERE, GROUP BY» — бесплатный урок Digital Marketing Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Digital Marketing Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Digital Marketing Academy содержит 4 уроков всего.
Три глагола
Почти любая маркетинговая метрика строится на трёх конструкциях: SELECT выбирает столбцы, WHERE фильтрует строки, а GROUP BY объединяет строки в сегменты.
Освойте эту тройку — и сможете самостоятельно отвечать на большинство повседневных вопросов аналитики.
SELECT channel, SUM(revenue) AS revenue
FROM orders
GROUP BY channel;SELECT: выбор столбцов
SELECT перечисляет данные, которые вы хотите получить. С помощью AS можно переименовать столбцы, чтобы сделать результат понятнее, а также вычислить новые значения прямо в запросе.
Не перегружайте наборы результатов: выбирайте только действительно нужные столбцы, особенно в больших таблицах.
SELECT campaign_id AS campaign,
spend,
spend * 1.2 AS spend_with_fees
FROM campaigns;WHERE: фильтрация строк
WHERE оставляет только строки, соответствующие условию. Объединяйте условия с помощью AND и OR, чтобы точно выделить нужный сегмент.
Фильтры по датам — основа работы маркетолога: они точно задают период отчётности.
SELECT *
FROM sessions
WHERE channel = 'email'
AND session_date >= DATE '2026-01-01'
AND device = 'mobile';Фильтрация с помощью IN и BETWEEN
IN проверяет совпадение с любым значением из списка и отлично подходит для нескольких кампаний одновременно. BETWEEN задаёт диапазон и особенно удобен для периодов дат.
Эти конструкции делают сложные фильтры короткими и понятными вместо длинных цепочек OR.
SELECT order_id, revenue
FROM orders
WHERE channel IN ('paid_search', 'paid_social')
AND order_date BETWEEN DATE '2026-03-01' AND DATE '2026-03-31';GROUP BY: сегментация
GROUP BY объединяет строки с одинаковым значением в одну строку для каждой группы. Используйте его вместе с агрегатными функциями, такими как SUM, COUNT и AVG, чтобы получать метрики по сегментам.
Так необработанные события превращаются в таблицу эффективности по каждому каналу.
SELECT channel,
COUNT(*) AS sessions,
SUM(revenue) AS revenue
FROM sessions
GROUP BY channel;Агрегатные функции
SUM суммирует доход, COUNT подсчитывает события, AVG вычисляет среднее значение, а COUNT(DISTINCT ...) считает уникальных пользователей.
Подсчёт уникальных значений важен в маркетинге: общее число сеансов и число уникальных посетителей — это совершенно разные показатели.
SELECT campaign_id,
COUNT(*) AS clicks,
COUNT(DISTINCT user_id) AS reach,
AVG(revenue) AS avg_order
FROM orders
GROUP BY campaign_id;Группировка по нескольким столбцам
Группируйте данные более чем по одному столбцу, чтобы построить матрицу, например по каналу и устройству. Каждое уникальное сочетание становится отдельной строкой.
Это позволяет выполнять более глубокую сегментацию без экспорта данных в электронную таблицу.
SELECT channel, device,
COUNT(*) AS sessions
FROM sessions
GROUP BY channel, device
ORDER BY channel, sessions DESC;HAVING: фильтрация групп
WHERE фильтрует строки до группировки, а HAVING — группы после агрегации. Используйте HAVING, чтобы оставить только сегменты выше заданного порога.
Например, выведите только кампании, которые принесли более 100 заказов.
SELECT campaign_id, COUNT(*) AS orders
FROM orders
GROUP BY campaign_id
HAVING COUNT(*) > 100
ORDER BY orders DESC;Сортировка и ограничение
ORDER BY сортирует результаты, чтобы самые важные строки отображались первыми. LIMIT ограничивает количество отображаемых строк — это особенно удобно для отчётов по лидерам.
Вместе они мгновенно отвечают на вопрос: «Каковы мои топ-5 кампаний по выручке?»
SELECT campaign_id, SUM(revenue) AS revenue
FROM orders
GROUP BY campaign_id
ORDER BY revenue DESC
LIMIT 5;Условная агрегация
FILTER (или CASE внутри агрегатной функции) позволяет одному запросу одновременно вычислять несколько условных метрик, например выручку от новых и вернувшихся клиентов.
Так вы избегаете запуска нескольких запросов и сохраняете полное соответствие сегментов.
SELECT channel,
SUM(revenue) FILTER (WHERE is_new_customer) AS new_rev,
SUM(revenue) FILTER (WHERE NOT is_new_customer) AS repeat_rev
FROM orders
GROUP BY channel;Собираем всё вместе
Полный запрос объединяет все секции: фильтрует строки с помощью WHERE, группирует их, фильтрует группы с помощью HAVING, а затем сортирует и ограничивает результат.
Читайте его сверху вниз — и он расскажет целостную аналитическую историю о ваших каналах.
SELECT channel, SUM(revenue) AS revenue
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY channel
HAVING SUM(revenue) > 1000
ORDER BY revenue DESC;Быстрая проверка
Вы хотите оставить только группы кампаний с более чем 50 заказами. Какая секция фильтрует агрегированные группы?
Итоги
SELECT выбирает столбцы, WHERE фильтрует строки, GROUP BY формирует сегменты, HAVING фильтрует группы, а ORDER BY и LIMIT формируют результат.
С помощью условной агрегации вы вычисляете несколько метрик за один проход. Далее: объединение данных из нескольких таблиц с помощью JOIN.
Часто задаваемые вопросы
Урок «SELECT, WHERE, GROUP BY» бесплатный?
Да — полный текст урока «SELECT, WHERE, GROUP BY» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Digital Marketing Academy, подпишись на CoddyKit PRO. Курс Digital Marketing Academy содержит 4 уроков всего.
Чему я научусь в уроке «SELECT, WHERE, GROUP BY»?
Агрегируйте данные кампаний Ты практикуешь Digital Marketing Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Digital Marketing Academy?
Предыдущий опыт не требуется. Digital Marketing Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «SELECT, WHERE, GROUP BY»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Digital Marketing Academy?
Да. Каждый урок Digital Marketing Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Зачем маркетологам изучать SQL
- SELECT, WHERE, GROUP BY
- Объединение маркетинговых таблиц
- Запросы по когортам и воронкам