Каждая касса ведёт собственную сквозную нумерацию чеков (receipt_no). Из-за сбоев часть номеров потерялась. Найди пропущенные диапазоны номеров внутри каждой кассы и выведи их как интервалы: register_id, gap_start (первый пропущенный номер), gap_end (последний пропущенный номер). Пропуск из одного номера показывай как gap_start = gap_end. Отсортируй по register_id, затем по gap_start.
CREATE TABLE receipts (
register_id INTEGER NOT NULL,
receipt_no INTEGER NOT NULL,
amount REAL NOT NULL
);
gaps-and-islands lead window-functions missing-values distinct
Задача «Пропущенные номера чеков по кассам» учит решать задачи по теме «gaps-and-islands» так, как это спрашивают на собеседовании аналитика данных. Такие задачи встречаются на собеседованиях в X5 Group и других IT-компаниях. Уровень средний — типичная боевая задача на уверенное владение SQL.
Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).
Разбор темы с примерами — в гайде «gaps-and-islands в SQL». Хочешь системно с нуля — пройди бесплатный курс «SQL с нуля».
Решить в интерактивной SQL-песочнице → ← Все SQL-задачи