Тогда только столбец, который выглядит как время прохождения DURATION
, его тип данных NUMBER
. Что означает это число? Минуты? Часы? Что-то еще?
В любом случае, вот один вариант, который вы могли бы рассмотреть. Он «сортирует» длительности (то есть «время в пути»), используя аналитическую функцию RANK
, и извлекает строку (или строки), чья продолжительность минимальна.
Преимущество такого подхода состоит в том, что вы должны сканировать таблицу только один раз; если вы выбираете минимальную длительность в подзапросе, а затем используете его результат для извлечения данных, которые вас интересуют, то вы дважды обращаетесь к одной и той же таблице, что может иметь значение, если задействовано много строк. Для небольшого набора данных вы не заметите никакой разницы.
SCHEDULE
CTE представляет некоторые тестовые данные; вам нужен код, который начинается со строки 6.
SQL> with schedule (schedule_id, source, destination, duration) as
2 (select 1, 'Paris', 'London' , 8 from dual union all
3 select 2, 'Berlin', 'Prague' , 4 from dual union all
4 select 3, 'Zagreb', 'Budapest', 4 from dual
5 )
6 select schedule_id, source, destination, duration
7 from (select schedule_id, source, destination, duration,
8 rank() over (order by duration) rn
9 from schedule
10 )
11 where rn = 1;
SCHEDULE_ID SOURCE DESTINAT DURATION
----------- ------ -------- ----------
2 Berlin Prague 4
3 Zagreb Budapest 4
SQL>