Gaps-and-islands: непрерывные серии активных дней

hard SQL

Условие задания

Задача про streak-и (серии). Есть таблица ежедневной активности пользователей. Нужно найти для каждого пользователя все непрерывные серии активных дней (islands) и вернуть начало серии, конец и длину. Это классический gaps-and-islands.

Таблица `daily_active`:

| user_id | activity_date |
|---------|---------------|
| 1 | 2026-02-01 |
| 1 | 2026-02-02 |
| 1 | 2026-02-03 |
| 1 | 2026-02-07 |
| 1 | 2026-02-08 |
| 2 | 2026-02-05 |

Для пользователя 1 должно получиться две серии: 01–03 (длина 3) и 07–08 (длина 2).

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "Gaps-and-islands: непрерывные серии активных дней"?

Это задание для уровня hard. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «SQL»?

На zasqlpython.ru есть 520+ SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.

← Все задания