Задача 3F. Инциденты тех. поддержки

Автор:О. Константинов   Ограничение времени:1 сек
Входной файл:test.sql   Ограничение памяти:256 Мб
Выходной файл:test.log  

Условие

В БД хранится список специалистов тех. поддержки Specialists, список инцидентов Incidents и список назначений специалиста тех. поддержки на инцидент Assignment для дальнейшего устранения последствий инцидента. За устранение последствий каждого инцидента отвечает единственный специалист тех. поддержки. Все инциденты обрабатываются специалистами в порядке регистрации инцидентов в БД. Устраненные инциденты никак не помечаются, вместо этого у каждого специалиста есть поле Resolved, которое хранит количество устраненных инцидентов. Ниже представлено детальное DDL-описание таблиц:


TABLE Specialists ( -- хранит список специалистов тех. поддержки
    ID       INTEGER PRIMARY KEY AUTOINCREMENT -- уникальный идентификатор
                     NOT NULL,
    FullName TEXT    NOT NULL, -- ФИО специалиста
    Resolved INTEGER NOT NULL -- количество обработанных инцидентов
                     CHECK (Resolved >= 0)
                     DEFAULT (0)
);

TABLE Incidents ( -- список всех инцидентов
    ID          INTEGER PRIMARY KEY AUTOINCREMENT -- уникальный идентификатор
                        NOT NULL,
    Title       TEXT    NOT NULL, -- заголовок инцидента
    CreatedAt   DATETIME NOT NULL,
    Description TEXT -- описание инцидента
);

TABLE Assignment ( -- список назначений инцидентов специалистам
    SpeсialistID INTEGER NOT NULL -- идентификатор специалиста
                         REFERENCES Specialists (ID),
    IncidentID   INTEGER NOT NULL -- идентификатор инцидента
                         REFERENCES Incidents (ID),
    UNIQUE (
        SpeсialistID,
        IncidentID
    )
);

Требуется для каждого специалиста тех. поддержки вывести 5 ближайших к устранению инцидентов. Результат отсортировать по SpeсialistID, затем по порядку обработки. Если специалист устранил все инциденты, то его следует игнорировать. Схема БД в UML-нотации:

Результатом выполнения запроса должен быть список кортежей (FullName, IncidentTitle). Описание полей запроса:

Решение следует представить в виде текстового файла, содержащего единственный SQL-запрос.

Формат входного файла

Пример тестовой БД.

Ограничения

Полагается, что для работы с базой данных используется SQLite3.


0.079s 0.012s 17