Задача 03C. Падший Джедай?

Автор:Н. Шурло   Ограничение времени: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.


0.033s 0.008s 17