// SQL-детектив · дело № 01
SQL-детектив: кража в коворкинге «Гараж»
Улики — в таблицах. Твой инструмент — SQL. Восстанови события и найди заказчика кражи, бесплатно и без регистрации.
- 7 шагов
- 8 таблиц
- 30–60 минут
Шаг 1. Заявление о краже
Прогресс и запрос сохраняются в этом браузере.
Улики по порядку
от заявления до заказчика-
текущий шаг Заявление о краже
Начни с журнала происшествий: за неделю в нём несколько записей, и только одна о краже. Найди её и узнай, из какой комнаты пропал прототип.
к SQL-запросунужно: SELECT и WHERE
подсказка
Столбец kind хранит тип происшествия одним словом в нижнем регистре.
один из рабочих запросов:
-
закрыт Кто слышал служебный выход
Утром охрана сняла двенадцать показаний. Кто-то из опрошенных упомянул служебный выход: найди это показание по тексту и назови человека.
к SQL-запросуподсказка
Текст лежит в statements.statement, имена в people.full_name. Ищи подстроку «служебный выход» через LIKE.
один из рабочих запросов:
-
закрыт Кто вышел через служебный выход
Проверь слова охранника по журналу турникетов: сколько разных людей вышли через служебный выход 13 марта между 23:30 и 23:50?
к SQL-запросунужно: BETWEEN и датыCOUNT(DISTINCT)
подсказка
Дата и время в passed_at, сравнивай со строкой вида '2026-03-13 23:30'. Считай DISTINCT person_id, чтобы двойной проход не удвоил ответ.
один из рабочих запросов:
-
закрыт Кто из них был на третьем этаже
У каждого этажа своя точка Wi-Fi. Кто из этих двоих был подключён к сети третьего этажа между 22:30 и 23:40?
к SQL-запросунужно: подзапрос и INJOIN
подсказка
Сессия пересекает окно, если началась до его конца и закончилась после его начала: started_at < '…23:40' AND ended_at > '…22:30'. Двоих с прошлого шага подставь подзапросом.
один из рабочих запросов:
-
закрыт Машина у шлагбаума
Подозреваемый вышел в 23:41. Какая машина покинула паркинг в следующие десять минут?
к SQL-запросунужно: interval и даты
подсказка
Верхняя граница: '2026-03-13 23:41'::timestamp + interval '10 minutes'. Или запиши обе границы строками.
один из рабочих запросов:
-
закрыт Чья это машина
Номер есть, теперь владелец и его компания: соедини паркинг с людьми и компаниями и назови компанию.
к SQL-запросунужно: JOIN трёх таблиц
подсказка
parking.person_id ведёт в people.id, а people.company_id в companies.id. Машина заезжала всю неделю, поэтому без DISTINCT получишь одну строку на каждый заезд.
один из рабочих запросов:
-
закрыт Заказчик
Кражу готовили заранее: кто-то из компании владельца машины всю неделю с 9 по 13 марта бронировал переговорные третьего этажа. Кто из этой компании делал это чаще всех?
к SQL-запросунужно: GROUP BY и COUNTORDER BY и LIMIT
подсказка
Переговорные третьего этажа начинаются с «3-»: room LIKE '3-%'. Сгруппируй по человеку и отсортируй по COUNT(*) DESC.
один из рабочих запросов:
SQL-консоль
к заданиюПиши SELECT: результат появится ниже. База восстанавливается перед каждым запуском.
таблицы базы 8
Нажми на имя таблицы, чтобы подставить запрос.
- 11 строк компании-резиденты и их офисы id, name, floor, room
- 57 строк все, у кого есть бейдж; у гостя host_id указывает на пригласившего id, full_name, role, company_id, host_id
- 7 строк журнал происшествий охраны id, reported_at, reported_by, room, kind, description
- 12 строк показания, снятые утром 14 марта id, person_id, taken_at, statement
- 472 строк турникеты: главный вход, паркинг, служебный выход id, person_id, door, direction, passed_at
- 213 строк подключения к точкам доступа, по одной на этаж id, person_id, floor, started_at, ended_at
- 63 строк брони переговорных id, room, person_id, starts_at, ends_at, purpose
- 68 строк шлагбаум паркинга id, plate, person_id, entered_at, left_at
people.id связан с person_id, reported_by и host_id. Компания человека: people.company_id → companies.id.
Дело раскрыто
Как играть
- Читай шаг и пиши запрос в консоли. Результат появляется под редактором.
- Впиши найденное в поле ответа: комнату, имя, число или номер машины. Регистр и «ё» не важны.
- Верный ответ открывает следующий шаг и один из рабочих запросов, чтобы сравнить со своим.
Прогресс и последний запрос хранятся в этом браузере. Кнопка «начать заново» — над шагами расследования.
Что тренируешь
- SELECT и WHERE
- LIKE
- JOIN
- BETWEEN и даты
- COUNT(DISTINCT)
- подзапрос и IN
- interval и даты
- JOIN трёх таблиц
- GROUP BY и COUNT
- ORDER BY и LIMIT
Каждая конструкция разобрана в справочнике: ссылка ведёт на статью с примерами на живой базе.
Преподавателям
Игру можно давать на уроке или в домашнем задании: страница открывается без регистрации, база живёт в браузере ученика, ответы проверяются на месте. Ссылка на эту страницу в материалах курса приветствуется.
Диалект PostgreSQL. Данные вымышлены, совпадения случайны.
Дальше
- SQL-тренажёр: 19 задач с автопроверкой от SELECT до отчётов.
- Песочница SQL: своя база, CREATE TABLE и INSERT разрешены.
- Справочник по SQL: JOIN, GROUP BY, подзапросы, оконные функции.
- Шпаргалка по SQL: синтаксис на одной странице.