| Автор: | ChatGPT | Ограничение времени: | 1 сек | |
| Входной файл: | test.sql | Ограничение памяти: | 256 Мб | |
| Выходной файл: | test.log |
Нэнси Дрю - знаменитая девушка-детектив, приехала в старинное поместье Блэкмур, где во время ночной экскурсии начали происходить странные происшествия: в комнатах появлялись маски, тайные знаки, погасшие свечи и другие подозрительные предметы. У Нэнси есть журнал перемещений гостей по комнатам, список вещей, которые были у каждого подозреваемого, и список зафиксированных происшествий.
Нэнси считает, что подозреваемый мог устроить происшествие, если одновременно выполняются два условия:
Если один и тот же подозреваемый попадает под одно происшествие несколькими записями журнала, это происшествие всё равно считается только один раз.
База данных имеет следующую структуру:
CREATE TABLE IF NOT EXISTS Suspects (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS SuspectItems (
suspect_id INTEGER REFERENCES Suspects(id),
item TEXT NOT NULL,
PRIMARY KEY (suspect_id, item)
);
CREATE TABLE IF NOT EXISTS Incidents (
id INTEGER PRIMARY KEY,
room TEXT NOT NULL,
incident_time TEXT NOT NULL,
required_item TEXT NOT NULL,
importance INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS RoomLog (
suspect_id INTEGER REFERENCES Suspects(id),
room TEXT NOT NULL,
entered_at TEXT NOT NULL,
left_at TEXT NOT NULL
);
Требуется составить SQL-запрос, который найдёт наиболее подозрительных людей. Для каждого подозреваемого нужно посчитать:
covered_incidents — сколько разных происшествий он мог устроить;suspicion_score — сумму значений importance по этим происшествиям.
В ответ нужно вывести только тех подозреваемых, у кого значение covered_incidents максимально.
Если таких подозреваемых несколько, среди них нужно оставить только тех, у кого максимально значение suspicion_score.
Результатом выполнения запроса должен быть список кортежей
(suspect_name, covered_incidents, suspicion_score),
отсортированный по возрастанию suspect_name.
Решение следует представить в виде текстового файла, содержащего единственный SQL-запрос.
Предполагается, что для работы с базой данных используется SQLite3.
Значения времени хранятся как строки в формате YYYY-MM-DD HH:MM.