В таблице logins фиксируется каждый вход пользователя в приложение (в один день может быть несколько записей). Для каждого пользователя найди длину самой длинной серии подряд идущих календарных дней, в которые он заходил. Верни колонки user_id и streak_length. Отсортируй по streak_length по убыванию, затем по user_id по возрастанию.
CREATE TABLE logins (
user_id INTEGER NOT NULL,
login_date TEXT NOT NULL -- формат YYYY-MM-DD
);
gaps-and-islands window-functions row_number julianday streak
Задача «Самая длинная серия дней подряд с входом» учит решать задачи по теме «gaps-and-islands» так, как это спрашивают на собеседовании аналитика данных. Такие задачи встречаются на собеседованиях в T-Банк и других IT-компаниях. Уровень средний — типичная боевая задача на уверенное владение SQL.
Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).
Разбор темы с примерами — в гайде «gaps-and-islands в SQL». Хочешь системно с нуля — пройди бесплатный курс «SQL с нуля».
Решить в интерактивной SQL-песочнице → ← Все SQL-задачи