Воронка покупки: конверсия и отвал между шагами

Средняя Воронки конверсии Avito

Условие задачи

По таблице events (события пользователей) построй воронку по шагам view → add_to_cart → checkout → purchase. Для каждого шага выведи колонки: step_name — название шага; users — число УНИКАЛЬНЫХ пользователей, у которых было это событие; conv_from_prev_pct — конверсия из предыдущего шага в процентах (для первого шага NULL); conv_overall_pct — конверсия от первого шага (view) в процентах. Проценты округли до 1 знака. Отсортируй строки в порядке шагов воронки.

Схема данных

CREATE TABLE events (
  user_id INTEGER NOT NULL,
  event_type TEXT NOT NULL,   -- view | add_to_cart | checkout | purchase
  event_time TEXT NOT NULL    -- YYYY-MM-DD HH:MM
);

Темы

воронка funnel window-functions LAG count-distinct

Подсказки

Что проверяет эта задача

Задача «Воронка покупки: конверсия и отвал между шагами» учит решать задачи по теме «Воронки конверсии» так, как это спрашивают на собеседовании аналитика данных. Такие задачи встречаются на собеседованиях в Avito и других IT-компаниях. Уровень средний — типичная боевая задача на уверенное владение SQL.

Как подступиться к решению

Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).

Хочешь разобрать SQL системно с нуля — пройди бесплатный курс «SQL с нуля» и закрепи навык в тренажёре.

Решить в интерактивной SQL-песочнице → ← Все SQL-задачи