我有一系列的腿,组成了如下的路线:
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我感兴趣的是只获得与路由的最大序列id相关的行。在检查最大序列号之后,我想检查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发布于 2020-01-30 04:32:09
如果我没有理解错的话,在计算max()之前,您可以使用相关子查询并对所需的端点进行筛选
select t.*
from t
where t.sequence = (select max(t2.sequence)
from t t2
where t2.route = t.route and
t2.node_start in ('MAD8', 'BCN8')
);https://stackoverflow.com/questions/59975066
复制相似问题