首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用max with conditions SQL

使用max with conditions SQL
EN

Stack Overflow用户
提问于 2020-01-30 04:27:52
回答 1查看 34关注 0票数 0

我有一系列的腿,组成了如下的路线:

代码语言:javascript
复制
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。我不需要任何进一步的条件。因此,我的预期输出是:

代码语言:javascript
复制
   route    node_start  leg_ship_method    node_end       sequence
    xx      MAD8        train              DNW1              3
    yy      BCN8        boat                                 2

我的代码如下,但这只给出了路径的最大值,但没有上面提到的条件

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-01-30 04:32:09

如果我没有理解错的话,在计算max()之前,您可以使用相关子查询并对所需的端点进行筛选

代码语言:javascript
复制
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')
                   );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59975066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档