Доля выручки и ARPPU по каналам с защитой NULLIF

Сложная Доля/LTV, защита деления через NULLIF Avito

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

Таблица `channels` — маркетинговые каналы привлечения: `visitors` (визиты), `customers` (платящие), `revenue` (выручка, ₽). Для каждого канала посчитай: - `conversion_pct` — конверсию в оплату = customers / visitors в процентах (2 знака); - `revenue_share_pct` — долю канала в общей выручке = revenue / сумма всей выручки в процентах (2 знака); - `arppu` — среднюю выручку на платящего = revenue / customers (2 знака). Все три деления обязательно защити через NULLIF, чтобы канал с 0 платящих не ронял/не портил запрос: у него arppu должен получиться NULL. Отсортируй по `revenue_share_pct` по убыванию, при равенстве — по `channel`.

Схема данных

CREATE TABLE channels (
  channel TEXT PRIMARY KEY,
  visitors INTEGER NOT NULL,   -- визитов за период
  customers INTEGER NOT NULL,  -- платящих клиентов
  revenue INTEGER NOT NULL      -- выручка канала, ₽
);

Темы

NULLIF доля ARPPU LTV подзапрос деление на ноль

Подсказки

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

Задача «Доля выручки и ARPPU по каналам с защитой NULLIF» учит решать задачи по теме «Доля/LTV, защита деления через NULLIF» так, как это спрашивают на собеседовании аналитика данных. Такие задачи встречаются на собеседованиях в Avito и других IT-компаниях. Уровень сложный — задача проверяет глубину и умение собрать запрос из нескольких приёмов.

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

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

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

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