**Контекст:** Вы аналитик выручки SaaS-компании. Финансовый директор хочет один компактный отчёт по месяцам: разбивку MRR по тарифам в столбцах (pivot), нарастающую выручку с начала года (running total) и помесячный прирост MoM в процентах. У вас есть таблица оплат подписок.
[см. код в задании]
**Задание:**
1. Постройте отчёт по месяцам с колонками-тарифами через `CASE` (pivot): `mrr_team`, `mrr_business`, `mrr_enterprise` и `mrr_total`.
2. Добавьте `mrr_cumulative` — нарастающую сумму `mrr_total` от начала периода.
3. Добавьте `mom_growth_pct` — прирост `mrr_total` относительно предыдущего месяца в процентах; для первого месяца значение должно быть `NULL`.
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE subscription_payments (
payment_id BIGINT PRIMARY KEY,
user_id BIGINT NOT NULL,
plan VARCHAR(32), -- 'team'|'business'|'enterprise'
amount NUMERIC(12,2) NOT NULL,
paid_at TIMESTAMP NOT NULL
);
pivot CASE cumulative-sum MoM window-functions
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: pivot, CASE, cumulative-sum, MoM, window-functions.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 520+ SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания