Задача 06B. Управление долгами

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

Условие

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

Недавно, в ходе масштабного анализа, вы выявили весьма запутанный сценарий: у некоторых ваших ценных гостей появились долги. Каждый клиент задолжал за свой номер и потребленные им услуги. И хотя, конечно, эти задолженности, в какой-то степени, погашаются.

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


CREATE TABLE IF NOT EXISTS client
(
    client_id INTEGER PRIMARY KEY,
    first_name TEXT,
    last_name TEXT,
    email TEXT,
    phone_number TEXT
);

CREATE TABLE IF NOT EXISTS payment
(
    payment_id INTEGER PRIMARY KEY,
    reservation_id INTEGER,
    payment_method TEXT,
    amount DECIMAL(10, 2),
    payment_date DATETIME,
    FOREIGN KEY (reservation_id) REFERENCES reservation (reservation_id)
);

CREATE TABLE IF NOT EXISTS reservation_service
(
    reservation_service_id INTEGER PRIMARY KEY,
    reservation_id INTEGER,
    service_id INTEGER,
    FOREIGN KEY (reservation_id) REFERENCES reservation (reservation_id),
    FOREIGN KEY (service_id) REFERENCES service (service_id)
);

CREATE TABLE IF NOT EXISTS reservation
(
    reservation_id INTEGER PRIMARY KEY,
    room_id INTEGER,
    client_id INTEGER,
    check_in_date DATE,
    check_out_date DATE,
    staff_id INTEGER,
    FOREIGN KEY (room_id) REFERENCES room (room_id),
    FOREIGN KEY (client_id) REFERENCES client (client_id),
    FOREIGN KEY (staff_id) REFERENCES staff (staff_id)
);

CREATE TABLE IF NOT EXISTS rooms
(
    room_id INTEGER PRIMARY KEY,
    room_number TEXT,
    room_type TEXT,
    rate DECIMAL(10, 2)
);

CREATE TABLE IF NOT EXISTS service
(
    service_id INTEGER PRIMARY KEY,
    service_name TEXT,
    price DECIMAL(10, 2)
);

CREATE TABLE IF NOT EXISTS staff
(
    staff_id INTEGER PRIMARY KEY,
    first_name TEXT,
    last_name TEXT,
    position TEXT
);

Схема БД в UML-нотации:

Результатом выполнения запроса должен быть список кортежей (client_name, remaining_amount), отсортированный по убыванию значений поля remaining_amount.

client_name – ФИО клиентов;

remaining_amount – Сумма которую осталось заплатить;

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

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

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

Ограничения

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


0.099s 0.008s 17