Я играю с расписанием поездов и рассматриваю связь между станциями со времени.Построить пар из упорядоченного списка
Давайте рассмотрим пример:
Trip I: A (t1) ------------> B (t3) ------------> E (t5)
Trip II: C (t2) ------------> D (t4) ---> E (t6)
У нас есть 5 остановок (A
до E
), где поезда останавливаются во время ti
с двумя различными поездок (от A
до E
через B
и от C to
E though
d`) ,
Время таблица выглядит следующим образом (на точке зрения базы данных, существует также технический идентификатор):
--------------------
| Trip | Stop | Time |
--------------------
| I | A | t1 |
| I | B | t3 |
| I | E | t5 |
| II | C | t2 |
| II | D | t4 |
| II | E | t6 |
--------------------
Я хотел бы построить из этого соединения между станциями, что-то вроде (давайте не будем принимать во внимание время, затрачиваемое поезда на станции остановились для простоты):
---------------------------------------------------------------
| Departure stop | Departure time | Arrival stop | Arrival time |
---------------------------------------------------------------
| A | t1 | B | t3 |
| B | t3 | E | t5 |
| C | t2 | D | t4 |
| D | t4 | E | t6 |
---------------------------------------------------------------
Я уже сделал это в память с некоторым кодом:
- группировка по поездкам,
- Сортировка по времени,
- снятие элементов 2-на-2 в скользящем окне.
Однако, это просто, но не очень эффективно.
Вот почему мне интересно, можно ли его выражать с помощью SQL. Не так ли?
Как вы поживаете?
Я использую PostgreSQL для своих тестов, но меня больше интересуют контуры, чем точная реализация для конкретной базы данных.
Нет проблем для времени остовного: раз сохраняются в секундах, начиная с полуночи (так поезд прибывает на следующий день в 01:00 будет расценено как поезд прибывает в тот же тот же день в «25:00») , –
CTE не требуется на 100%, но я думаю, что он чище, чем необходимость генерировать результат набора дважды (один раз для каждого использования CTE), и если мы не разделились при поездке, нам не нужно было бы присоединяться к поскольку каждая строка будет иметь собственное время, но нам нужно будет заказать поездку, а затем время. – xQbert
Спасибо!Мне нужно немного отладить мой набор данных, но кажется, что он строит поездки только одним способом: с A <--> B <--> C, я получаю A -> B и B -> C, но не C -> B и B-- > A. Возможно, я что-то пропустил. –