| Автор: | А. Марченко | Ограничение времени: | 1 сек | |
| Входной файл: | test.sql | Ограничение памяти: | 256 Мб | |
| Выходной файл: | test.log |
1096 год стал переломным в истории рыцарства. Король объявил, что рыцари, которые смогут выиграть хотя бы по одному турниру в каждом месяце этого года, получат особую медаль за отвагу. Эта медаль дает рыцарю право на землю, место в совете и гарантирует высокое положение в обществе. Многие смельчаки со всего королевства бросились участвовать в турнирах, чтобы доказать свое мастерство и получить эту награду.
Однако далеко не все смогли выдержать такой напряженный график. Ваша задача — выяснить, кто из рыцарей смог выполнить условие короля и навсегда вписать свое имя в историю. Для каждого такого рыцаря нужно вывести список всех турниров, которые он выиграл в 1096 году с указанием накопленной суммы очков славы после каждого турнира, чтобы летописцы могли внести их имена в список избранных.
В базе данных хранятся записи о рыцарях и турнирах. Каждый турнир имеет название, дату проведения и количество очков славы, которое получит победитель. Гарантируется, что не существует турниров, у которых победитель еще не определен.
CREATE TABLE IF NOT EXISTS Knights (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS Tournaments (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
date DATE NOT NULL,
glory INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS TournamentWinners (
id INTEGER PRIMARY KEY,
tournament_id INTEGER NOT NULL UNIQUE,
knight_id INTEGER NOT NULL,
FOREIGN KEY (knight_id) REFERENCES Knights(id),
FOREIGN KEY (tournament_id) REFERENCES Tournaments(id)
);
Схема БД в UML-нотации:
Результатом выполнения запроса должен быть список кортежей
(KnightName, TournamentName, TournamentDate, GloryPoints, TotalGlory),
отсортированных по убыванию общей суммы очков славы рыцаря и возрастанию даты проведения турнира.
Описание полей запроса:
Решение следует представить в виде текстового файла, содержащего единственный SQL-запрос.
Пример вывода:
('Sir Percival of the Silver Shield', 'Frozen Shield', '1096-01-17', 35, 35)
('Sir Percival of the Silver Shield', 'Emerald Blade', '1096-02-18', 45, 80)
...
('Sir Percival of the Silver Shield', 'Icefang Challenge', '1096-12-12', 60, 890)
('Sir Godfrey of Blackwood', 'Icefang Challenge', '1096-01-05', 35, 35)
('Sir Godfrey of Blackwood', 'Frostwind Tournament', '1096-02-02', 15, 50)
...
('Sir Godfrey of Blackwood', 'Fire Cup', '1096-12-05', 65, 750)
Предполагается, что для работы с базой данных используется SQLite3.