| Автор: | Н. Шурло | Ограничение времени: | 1 сек | |
| Входной файл: | test.sql | Ограничение памяти: | 256 Мб | |
| Выходной файл: | test.log |
В глубинах галактики, где переплетаются судьбы джедаев и ситхов, зародилось древнее пророчество. Говорят, что те, кто обучался у мастеров-ситхов, нередко искушались Темной стороной Силы. Совет джедаев поручил вам важную миссию — вычислить всех потенциально падших учеников, чтобы предотвратить катастрофу.
Ваша задача — выбрать всех Джедаев (Jedi), у которых хотя бы один из наставников (прямой мастер или грандмастер) относится к фракции «Sith». При этом число медиахлорианов у такого ученика должно быть выше среднего значения среди всех джедаев.
Обратите внимание, что данные о количестве медиахлорианов могут быть неизвестны (NULL). Такие ситуации происходят по разным причинам, иногда это число действительно неизвестно, а иногда оно намеренно удаляется из базы. В этом случае замените NULL на значение «Unknown». Результаты необходимо отсортировать так, чтобы в начале шли записи с неизвестным количеством медиахлорианов, а затем — по убыванию числового значения.
CREATE TABLE Characters (
CharacterID INTEGER PRIMARY KEY AUTOINCREMENT,
CharacterName TEXT NOT NULL,
MasterID INTEGER,
FractionID INTEGER,
MidiChlorians INTEGER DEFAULT 2000,
FOREIGN KEY (FractionID) REFERENCES Fractions(FractionID),
FOREIGN KEY (MasterID) REFERENCES Characters(CharacterID)
);
CREATE TABLE Fractions (
FractionID INTEGER PRIMARY KEY AUTOINCREMENT,
FractionName TEXT NOT NULL CHECK ( FractionName in ('Sith', 'Jedi', 'Neutral') )
);
Схема БД в UML-нотации:
Результатом выполнения запроса должен быть список кортежей
(CharacterID, CharacterName, MidiChlorians, MasterName, GrandMasterName)
Решение следует представить в виде текстового файла, содержащего единственный SQL-запрос.
Выведите список найденных маршрутов с указанием их длин как показано в примере:
| CharacterID | CharacterName | MidiChlorians | MasterName | GrandMasterName |
|---|---|---|---|---|
| 11 | Luke Skywalker | Unknown | Darth Vader | Darth Sidious |
| 47 | StarKiller | 45000 | Ram Kota | Darth Vader |
Предполагается, что для работы с базой данных используется SQLite3.