По таблице payments постройте помесячную сводку. Для каждого месяца (формат YYYY-MM по полю paid_at) выведите: month, число успешных платежей paid_cnt, число возвратов refunded_cnt, число неуспешных failed_cnt, сумму успешной выручки revenue (только по статусу paid) и прирост выручки к предыдущему месяцу в процентах mom_growth_pct, округлённый до 1 знака. Если в месяце какого-то статуса не было, в его колонке должен стоять 0, а не пропуск. Для самого первого месяца прирост — NULL. Отсортируйте по month по возрастанию.
CREATE TABLE payments (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
amount INTEGER NOT NULL,
status TEXT NOT NULL,
paid_at TEXT NOT NULL
);
LAG MoM CASE strftime пивот
Задача «Помесячная сводка платежей: пивот статусов и MoM-рост выручки» учит решать задачи по теме «Пивот и даты / оконные функции» так, как это спрашивают на собеседовании аналитика данных. Такие задачи встречаются на собеседованиях в T-Банк и других IT-компаниях. Уровень сложный — задача проверяет глубину и умение собрать запрос из нескольких приёмов.
Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).
Хочешь разобрать SQL системно с нуля — пройди бесплатный курс «SQL с нуля» и закрепи навык в тренажёре.
Решить в интерактивной SQL-песочнице → ← Все SQL-задачи