Главная страница
Навигация по странице:

  • Краткая информация о базе данных "Аэрофлот"

  • Задания по SQL. Информация о базе данных "Фирма вторсырья"


    Скачать 15.46 Kb.
    НазваниеИнформация о базе данных "Фирма вторсырья"
    Дата13.11.2019
    Размер15.46 Kb.
    Формат файлаdocx
    Имя файлаЗадания по SQL.docx
    ТипДокументы
    #94997

    Краткая информация о базе данных "Фирма вторсырья":
    Фирма имеет несколько пунктов приема вторсырья. Каждый пункт получает деньги для их выдачи сдатчикам вторсырья. Сведения о получении денег на пунктах приема записываются в таблицу:
    Income_o(point, date, inc)
    Первичным ключом является (point, date). При этом в столбец date записывается только дата (без времени), т.е. прием денег (inc) на каждом пункте производится не чаще одного раза в день. Сведения о выдаче денег сдатчикам вторсырья записываются в таблицу:
    Outcome_o(point, date, out)
    В этой таблице также первичный ключ (point, date) гарантирует отчетность каждого пункта о выданных деньгах (out) не чаще одного раза в день.
    В случае, когда приход и расход денег может фиксироваться несколько раз в день, используется другая схема с таблицами, имеющими первичный ключ code:
    Income(code, point, date, inc)
    Outcome(code, point, date, out)
    Здесь также значения столбца date не содержат времени.

    Задание 5. Найти такие пункты приема, которые имеют в таблице Outcome записи на каждый рабочий день в течение некоторой недели (календарные дни, исключая субботу и воскресенье).
    Вывод: номер пункта, дата понедельника полной рабочей недели в формате "YYYY-MM-DD", суммарное значение out за эту рабочую неделю.

    Задание 6. Фирма открывает новые пункты по приему вторсырья.

    При открытии, каждому из них были выданы "подъемные" в размере 20 т.р.

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

    - Для пунктов, справившихся с заданием, определить дату его выполнения и сумму денежных средств, полученных сверх плана на эту дату;

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

    Вывод: пункт, дата выполнения (или последний день), сумма сверх плана (или недостающую сумму до плана).

    Краткая информация о базе данных "Аэрофлот":

    Company (ID_comp, name)

    Trip(trip_no, ID_comp, plane, town_from, town_to, time_out, time_in)

    Passenger(ID_psg, name)

    Pass_in_trip(trip_no, date, ID_psg, place)

    Таблица Company содержит идентификатор и название компании, осуществляющей перевозку пассажиров.

    Таблица Trip содержит информацию о рейсах: номер рейса, идентификатор компании, тип самолета, город отправления, город прибытия, время отправления и время прибытия.

    Таблица Passenger содержит идентификатор и имя пассажира.

    Таблица Pass_in_trip содержит информацию о полетах: номер рейса, дата вылета (день), идентификатор пассажира и место, на котором он сидел во время полета.

    При этом следует иметь в виду, что:

    - рейсы выполняются ежедневно, а длительность полета любого рейса менее суток; town_from <> town_to;

    - время и дата учитывается относительно одного часового пояса;

    - время отправления и прибытия указывается с точностью до минуты;

    - среди пассажиров могут быть однофамильцы (одинаковые значения поля name, например, Bruce Willis);

    - номер места в салоне – это число с буквой; число определяет номер ряда, буква (a – d) – место в ряду слева направо в алфавитном порядке;

    - связи и ограничения показаны на схеме данных.

    Задание 7. Номера рейсов, упорядоченные по возрастанию, конкатенировать в строку.

    Разбить полученную строку по 3 символа, начиная слева; лишние символы отбросить.

    Считая каждую трехсимвольную строку числом, найти сумму таких чисел, а также минимальное и максимальное значения.

    Вывод: минимальное значение, максимальное значение, сумма значений.

    Решение:

    Первую часть я решил (Номера рейсов, упорядоченные по возрастанию, конкатенировать в строку):

    DECLARE @Result varchar(max)=''

    SELECT @Result = concat(@Result, t.[trip_no])

    FROM (select trip_no from Trip orders by trip_no) t

    SELECT @Result as ttt

    Третья часть тоже понятна (найти сумму таких чисел, а также минимальное и максимальное значения), тут все элементарно.

    А вот со второй частью пока не понятно (Разбить полученную строку по 3 символа, начиная слева; лишние символы отбросить).


    написать администратору сайта