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

Автор:О. Константинов   Ограничение времени: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.


Задача B. Сотрудники ИТ-отдела

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

Условие

Студент ДВФУ проходил производственную практику в ИТ-отделе предприятия. Должность руководителя отдела называется PC Principal. По окончании практики студенту требуется составить отчет, частью которого является описание организационной структуры ИТ-отдела предприятия. Он решил воспользоваться локальной БД предприятия, которая хранит в одной таблице Employees список всех сотрудников вместе с иерархией подчиненности (для каждого сотрудника указывается его непосредственный начальник). Для учредителя компании поле ChiefID равно NULL. Название занимаемых должностей вынесено в отдельную таблицу Positions. У линейного персонала может быть не указана должность. Ниже представлено детальное DDL-описание таблиц:


TABLE Employees ( -- хранит список сотрудников
    ID         INTEGER PRIMARY KEY AUTOINCREMENT -- уникальный идентификатор
                       NOT NULL,
    FullName   TEXT    NOT NULL, -- ФИО сотрудника
    PositionID INTEGER REFERENCES Positions (ID), -- должность сотрудника
    ChiefID    INTEGER REFERENCES Employees (ID) -- непосредственный начальник
);

TABLE Positions ( -- хранит список должностей
    ID    INTEGER PRIMARY KEY AUTOINCREMENT -- уникальный идентификатор
                  NOT NULL,
    Title TEXT    UNIQUE -- название должности
                  NOT NULL
);

Требуется создать представление ShowITEmployees, вызов которого вернут список всех сотрудников ИТ-отдела во главе с PC Principal. Схема БД в UML-нотации:

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

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

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

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

Ограничения

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


Задача C. Восстановление списка файлов

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

Условие

Российский видеоблогер Илья Мэддисон решил выпустить обзор новой компьютерной игры. Но, при установки её на компьютер, его Windows 10 не выдержала нагрузки и "слетела", так как недавно получила новый накопительный пакет обновлений. Помогите Илье восстановить данные с диска, написав SQL-запрос к таблице файловой системы.

Файловая системы содержит три типа записей: "root" - корень диска, "dir" - директория, "file" - файл; имеет следующую структуру:

Результатом выполнения запроса должна быть список полных имен full_name файлов, директорий и букв диска. Чтобы отличить типы объектов, нужно выводить символ ":" в конце буквы диска, "\" в конце названия директории, значение поля extension через "." в конце имени файла. В качестве разделителя между объектами используется символ "\", список имен должен быть отсортирован по возрастанию id.

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

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

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

Ограничения

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


Задача D. Итоги спортивных соревнований

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

Условие

Одной спортивной организации понадобилось сформировать отчет обо всех когда-либо проведенных ею соревнованиях.

Все данные о прошедших соревнованиях и их результатах хранятся в базе данных, состоящей из следующих таблиц:

CONTESTS (соревнования) ROWI INTEGER PRIMARY KEY AUTOINCREMENT, -- ID соревнования ... TEAMS (команды) ROWI INTEGER PRIMARY KEY AUTOINCREMENT, -- ID команды KIND INTEGER NOT NULL, -- ID дисциплины ... POINTS (оценки) CONTEST INTEGER REFERENCES CONTESTS(ROWI), TEAM INTEGER REFERENCES TEAMS(ROWI), MARK INTEGER NOT NULL, ...

Однако уже в процессе оказалось, что основная таблица, содержащая всю сводную информацию, была утеряна.
В связи с этим возникла необходимость восстановить ее на основе существующих в БД записей.

В качестве ответа необходимо вывести таблицу, состоящую из следующих столбцов:

  1. ID соревнования,
  2. ID дисциплины,
  3. номер места среди участников текущей дисциплины (начиная с единицы),
  4. ID команды.

Сортировка производится по всем имеющимся столбцам в порядке их следования.
При этом у команд, набравших равное число баллов, места должны совпадать.

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

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

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

Ограничения

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


Задача E. График конференции

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

Условие

Молодой программист Вася прибыл на международную IT-конференцию и почти сразу же озаботился следующей проблемой.

График мероприятий конференции хранится в БД. Основу такой БД составляет таблица EVENTS, имеющая следующий вид:

ROWI INTEGER PRIMARY KEY AUTOINCREMENT, HEAD DATE NOT NULL CHECK (HEAD < TAIL), -- начало мероприятия TAIL DATE NOT NULL -- конец мероприятия

и таблица KWORDS, в которой каждому мероприятию ставится в соответствие набор ключевых слов.

EVENT INTEGER REFERENCES EVENTS(ROWI), WORD INTEGER NOT NULL, PRIMARY KEY (EVENT, WORD)

Вася хочет посетить как можно большее число мероприятий, которые не перекрываются по времени.
При этом его интересуют только те мероприятия, в описании которых встречаются ключевые слова из заданного списка.

Напишите SQL-запрос с параметром, выполняющий выборку таких мероприятий.

В качестве ответа нужно вывести таблицу, состоящую из одного столбца,
который будет содержать номера выбранных мероприятий, отсортированных по времени их начала.

Решение следует представить в виде текстового файла, содержащего единственный SQL-запрос.
Вместо списка ключевых слов в тексте запроса должен присутствовать символ (:words).

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

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

Ограничения

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

Значения типа DATE задаются в виде строк, имеющих следующий формат: YYYY-MM-DD HH:MM


0.309s 0.009s 37