У меня есть последовательность участков, которые составляют маршрут, как показано ниже:
route node_start leg_ship_method node_end sequence
xx MAD4 bus MAD8 1
xx MAD8 train MAD8 2
yy BCN1 plane BCN8 1
yy BCN8 boat 2
xx MAD8 train DNW1 3
xx DNW1 train 4
Мне интересно получить только те строки, которые относятся к идентификатору MAX-последовательности маршрута. После проверки максимального идентификатора последовательности, я хотел бы проверить, является ли node_start IN ('MAD8',BCN8')
. Если нет, то я вычисляю свои MAX(sequence_id)-1
. Мне не нужны никакие дополнительные условия. Поэтому мой ожидаемый результат:
route node_start leg_ship_method node_end sequence
xx MAD8 train DNW1 3
yy BCN8 boat 2
Мой код ниже, но это дает мне только максимум маршрута, но без условия, которое я упомянул выше
SELECT y.*
FROM
(
SELECT
y.route,
max(sequence) max_sequence
FROM test y
GROUP BY
1
) AS x
INNER JOIN test y
on x.route = y.route and y.sequence = x.max_sequence
) AS t