SQLАналитические паттерныHardБесплатно

Воронка конверсий по платформам

// Условие

Постройте воронку конверсий по шагам: page_view → search → view_item → add_to_cart → begin_checkout → purchase. Для каждой платформы (platform) и каждого шага воронки посчитайте количество уникальных пользователей, дошедших до этого шага. Выведите platform, step_name, unique_users и conversion_from_start (доля от page_view в процентах, округлить до 1 знака). Отсортируйте по platform, затем по порядку шагов воронки.

// Таблицы

sandbox.events
event_idBIGINT
user_idINT
event_nameVARCHAR(30)
event_timeTIMESTAMP
platformVARCHAR(10)
page_urlVARCHAR(100)

// Что тренирует

ВоронкаCOUNT DISTINCTFIRST_VALUECASE WHEN
▶ Решить в SQL-песочнице

// Решение

Подсказка

Для порядка шагов используйте CASE WHEN step_name = 'page_view' THEN 1 ... END. Для conversion_from_start нужен COUNT пользователей на page_view — получите через оконную функцию или подзапрос.

Сначала попробуй сам → Показать решение
WITH step_order AS (
  SELECT
    platform,
    event_name AS step_name,
    COUNT(DISTINCT user_id) AS unique_users,
    CASE event_name
      WHEN 'page_view' THEN 1
      WHEN 'search' THEN 2
      WHEN 'view_item' THEN 3
      WHEN 'add_to_cart' THEN 4
      WHEN 'begin_checkout' THEN 5
      WHEN 'purchase' THEN 6
    END AS step_num
  FROM sandbox.events
  GROUP BY platform, event_name
),
with_start AS (
  SELECT
    *,
    FIRST_VALUE(unique_users) OVER (
      PARTITION BY platform ORDER BY step_num
    ) AS start_users
  FROM step_order
)
SELECT
  platform,
  step_name,
  unique_users,
  ROUND(100.0 * unique_users / start_users, 1) AS conversion_from_start
FROM with_start
ORDER BY platform, step_num;

Воронка — одна из главных задач продуктового аналитика. Ключевые моменты:
(1) COUNT(DISTINCT user_id) — один пользователь может генерировать много событий одного типа.
(2) CASE для порядка шагов — без него шаги отсортируются по алфавиту.
(3) FIRST_VALUE() OVER (PARTITION BY platform ORDER BY step_num) — получает количество пользователей на первом шаге (page_view) для каждой платформы.
(4) Ожидаем: web-конверсия хуже, чем мобилка — это заложено в данных.
Связь со статьёй «Воронка продукта» на сайте.

// Похожие задачи

// Разобраться в теме

→ SQL-задачи с собеседований аналитика