Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с заданием / 4 сообщений из 4, страница 1 из 1
02.04.2021, 18:58
    #40059170
Delphi_Watcher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с заданием
Добрый вечер всем. Помогите с заданием из книги по PostgreSQL. Уже второй день ломаю голову, пробую различные запросы/подзапросы. Не получается. А ответов на задания в книге нет. Выручайте.

Самые крупные самолеты в нашей авиакомпании — это Boeing 777-300. Выяс-
нить, между какими парами городов они летают, поможет запрос:

SELECT DISTINCT departure_city, arrival_city
FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
WHERE a.model = 'Boeing 777-300'
ORDER BY 1;


departure_city | arrival_city
----------------+--------------
Екатеринбург | Москва
Москва | Екатеринбург
Москва | Новосибирск
Москва | Пермь
Москва | Сочи
Новосибирск | Москва
Пермь | Москва
Сочи | Москва
(8 строк)

К сожалению, в этой выборке информация дублируется. Пары городов приведе-
ны по два раза: для рейса «туда» и для рейса «обратно». Модифицируйте запрос
таким образом, чтобы каждая пара городов была выведена только один раз:

departure_city | arrival_city
----------------+--------------
Москва | Екатеринбург
Новосибирск | Москва
Пермь | Москва
Сочи | Москва
(4 строки)
...
Рейтинг: 0 / 0
02.04.2021, 20:03
    #40059181
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с заданием
Delphi_Watcher,

Этим вопросом и этой задачей на форуме слегка достали...

коротко и не совсем верно в общем случае но как решение пойдет
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT DISTINCT departure_city, arrival_city
FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
WHERE a.model = 'Boeing 777-300'

and departure_city>arrival_city

ORDER BY 1;




или вот так вот более формально корректно
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT 
greatest(departure_city, arrival_city), least(departure_city, arrival_city)

FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
WHERE a.model = 'Boeing 777-300'
ORDER BY 1;


https://www.postgresql.org/docs/13/functions-conditional.html#FUNCTIONS-GREATEST-LEAST

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
03.04.2021, 08:51
    #40059257
Delphi_Watcher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с заданием
Maxim Boguk
Delphi_Watcher,

Этим вопросом и этой задачей на форуме слегка достали...

коротко и не совсем верно в общем случае но как решение пойдет
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT DISTINCT departure_city, arrival_city
FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
WHERE a.model = 'Boeing 777-300'

and departure_city>arrival_city

ORDER BY 1;




или вот так вот более формально корректно
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT 
greatest(departure_city, arrival_city), least(departure_city, arrival_city)

FROM routes r
JOIN aircrafts a ON r.aircraft_code = a.aircraft_code
WHERE a.model = 'Boeing 777-300'
ORDER BY 1;


https://www.postgresql.org/docs/13/functions-conditional.html#FUNCTIONS-GREATEST-LEAST

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru

Извините но я только изучаю. Про GREATEST и LEAST я не понял. В документации сказано что: Функции GREATEST и LEAST выбирают наибольшее или наименьшее значение из списка выражений.
В документации один абзац про GREATEST и LEAST. Даже примеров нет как их использовать. Вообщем я не понял((
...
Рейтинг: 0 / 0
03.04.2021, 09:43
    #40059261
Delphi_Watcher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с заданием
Вроде разобрался, спасибо.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с заданием / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]