powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Удаление одинаковых строк в запросе со значениями в разных ячейках
11 сообщений из 11, страница 1 из 1
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038756
Kanban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Такой вопрос
Задача: Есть большая база с рейсами и прочим, надо найти расстояние между аэропортами
reis | Аэропорт_отправления | Аэропорт_прибытия
значения строк, соответственно
PG0001 UIK SGC
PG0002 SGC UIK
PG0003 IWA AER
PG0004 AER IWA
PG0005 DME PKV
PG0006 PKV DME
PG0007 VKO JOK
PG0008 VKO JOK
PG0009 JOK VKO

эта пара (и другие там в таблице) по сути одно и то же для решения задачи. Рейс туда и обратно.
PG0001 UIK SGC
PG0002 SGC UIK
Собственно вопрос - как можно убрать такие "задвоения"? То есть как-то сравнить разные строки при этом сравнивание чтобы шло по разным ячейкам. Чтобы осталась одна строка
PG0001 UIK SGC
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038768
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kanban77,

Код: plsql
1.
select distinct on (greatest(Аэропорт_отправления, Аэропорт_прибытия), least(Аэропорт_отправления, Аэропорт_прибытия)) * from таблица order by reis, greatest(Аэропорт_отправления, Аэропорт_прибытия), least(Аэропорт_отправления, Аэропорт_прибытия);



как вариант


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038772
Kanban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
если group be reis то пишет ошибку, что столбец должен быть в select

а если без него
Код: plsql
1.
2.
select distinct on (greatest(departure_airport, arrival_airport), least(departure_airport, arrival_airport)) * from flights 
order by greatest(departure_airport, arrival_airport), least(departure_airport, arrival_airport);



то выводит 309 строк (без склейки дубликатов выходит 618 строк)
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038774
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kanban77,

не понял чего вы хотите то... или что вам не нравится
задвоения убрали чего еще ?


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038782
Kanban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk, я, как начинающий, хочу понять ) удаление задвоений прошло верно, но в том запросе, который Вы прислали стоит
Код: plsql
1.
order by reis, greatest(Аэропорт_отправления, Аэропорт_прибытия), least(Аэропорт_отправления, Аэропорт_прибытия) 



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

а если убрать reis из order by, то запрос отрабатывает и выдает нужное и верное количество записей. Для моей задачи - этого достаточно, но хочется еще понять и осознать смысл написанного )

Вы же не просто так написали order by reis?

В любом случае большое спасибо - "задвоение ушло".

И тогда, если не затруднит, дополнительный вопрос: куратор задания, когда я его спросил как можно сделать такое сравнение, он написал такой ответ "<>" - но я за два дня не смог понять, больше меньше чего с чем.
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038853
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kanban77
куратор задания, когда я его спросил как можно сделать такое сравнение, он написал такой ответ "<>" - но я за два дня не смог понять, больше меньше чего с чем.

Код: sql
1.
2.
3.
select departure_airport, arrival_airport 
from flights 
where departure_airport < arrival_airport
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038873
Kanban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,
работает, спасибо!

но теперь появился еще более важный вопрос - а как оно так работает? ))

PG0001 UIK SGC
PG0002 SGC UIK
where departure_airport < arrival_airport

он же сравнивает в рамках одной строки? Как "он" понимает, что уже есть UIK-SGC который то же самое что SGC-UIK (в нашем случае) но это же другая строка уже.
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038903
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
Kanban77
куратор задания, когда я его спросил как можно сделать такое сравнение, он написал такой ответ "<>" - но я за два дня не смог понять, больше меньше чего с чем.

Код: sql
1.
2.
3.
select departure_airport, arrival_airport 
from flights 
where departure_airport < arrival_airport



Это работает ТОЛЬКО ЕСЛИ в данных ВСЕГДА есть рейсы А->B и B->A одновременно.
В постановке задачи - про это ни слова (и кстати бывает что так и есть в реальности когда в одну сторону рейс а назад с остановкой где то).
Иначе вы теряете те строки где departure_airport > arrival_airport и нет рейса обратного.



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40038914
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kanban77
а как оно так работает? ))
оно работает из этого предположения
Maxim Boguk
ВСЕГДА есть рейсы А->B и B->A одновременно.
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40039011
Kanban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk, court,
значит с таким условием, если у меня есть где-то "кольцевой маршрут" А-Б-В-А то маршруты АБ, БВ и ВА в этом селекте вообще не покажутся.

А способ Максима в этом случае будет работать я так понимаю?

И, допустим, у нас все маршруты парные Туда и Обратно, но в этом случае я все равно не могу понять как это условие
Код: plsql
1.
2.
3.
select departure_airport, arrival_airport 
from flights 
where departure_airport < arrival_airport


отсекает пару? Он их по алфавиту "измеряет" как-то? Но даже если по алфавиту, как "оно понимает" что именно в этой паре надо убрать 1 рейс?
...
Рейтинг: 0 / 0
Удаление одинаковых строк в запросе со значениями в разных ячейках
    #40039080
Kanban77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как оно вообще работает? )
на скрине перепутал, наоборт цифра больше буквы, а буква чем дальше по алфавиту - тем больше. Типа А=1 Б=2 Я=33 и т.д.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Удаление одинаковых строк в запросе со значениями в разных ячейках
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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