Книги и статьи по SQL Rambler's Top100 Switch language to: English 14 июля 2020 г. 18:18:48


www.sql-ex.ru
Skip Navigation Links  

 

Print  Версия для печати

На главную страницу

Характерные ошибки при решении упражнений. Задача 40

Моисеенко С.И.

Для каждой компании, перевозившей пассажиров, подсчитать время, которое провели в полете самолеты с пассажирами. Вывод: название компании, время в минутах.

Проблемы с задачей можно проиллюстрировать таким сообщением одного из участников:

SELECT Trip.time_out, Trip.time_in
       FROM Trip
       WHERE Trip.id_comp=2

time_out                time_in
-----------------------------------------------
1900-01-01 09:35:00.000 1900-01-01 11:23:00.000
1900-01-01 17:55:00.000 1900-01-01 20:01:00.000

Получается, что компания Аэрофлот произвела два полёта, первый продолжительностью в 1 час 48 минут, второй - продолжительностью 2 часа 6 минут, итоговая продолжительность полётов получается 108 + 126= 234 минуты, а никак не 216 минут (как указано в "правильном результате")

Непонимание вызвано недостаточным изучением описания и схемы БД. Таблица Trip представляет собой расписание полетов, которые выполняются ежедневно.

А вот в таблице Pass_in_trip содержится информация о полетах пассажиров. Давайте посмотрим, какие рейсы компании с id_comp=2 были выполнены:

select pt.trip_no,date,time_out,time_in
       from pass_in_trip pt 
       join
       (select trip_no,time_out,time_in from trip where id_comp=2) t
               on t.trip_no=pt.trip_no 
       group by pt.trip_no,date,time_out,time_in

Вот результат вышеприведенного запроса:

trip_no  date                    time_out                time_in
--------------------------------------------------------------------------------
1145     2003-04-05 00:00:00.000 1900-01-01 09:35:00.000 1900-01-01 11:23:00.000
1145     2003-04-25 00:00:00.000 1900-01-01 09:35:00.000 1900-01-01 11:23:00.000

Итак, первый рейс был выполнен дважды, а второй - ни разу, т.е. 108*2 = 216.

Перейти к решению задачи #40

На главную страницу

Print  Версия для печати


Использование любых материалов данного сайта возможно только
при условии обязательного размещения прямой ссылки на сайт
http://www.sqlbooks.ru
на каждой странице, где размещены используемые материалы.

 Начало   Статьи    Книги 
Рейтинг@Mail.ru Rambler's Top100 Alt Упражнения по SQL: обучение, тестирование, сертификация по языку SQL Copyright c 2002-2006. All rights reserved.