Периоды непрерывной подписки
Сложная
gaps_islands
Условие задачи
Таблица `subscription(user_id, month_start, is_active)` — активность подписки помесячно, is_active=1/0. Для каждого пользователя найди все периоды непрерывной активности (≥1 месяц). Колонки: `user_id`, `period_start`, `period_end`, `months`. Сортировка по `user_id`, `period_start`.
Схема данных
CREATE TABLE subscription (user_id INTEGER, month_start TEXT, is_active INTEGER);
Темы
gaps-islands subscription streak
Подсказки
- Сначала отфильтруй только активные месяцы (is_active=1).
- Конвертируй year-month в total months: `year*12 + month`. Разность с ROW_NUMBER даёт стабильную "группу" непрерывного периода.
- Group by → MIN, MAX и COUNT для границ и длины каждого периода.
Решить в интерактивной SQL-песочнице →
← Все SQL-задачи