Таблица `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-задачи