首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询以忽略同一表中的类似行

SQL查询以忽略同一表中的类似行
EN

Stack Overflow用户
提问于 2017-10-04 10:36:49
回答 2查看 99关注 0票数 0

我有一个由日志和时间戳组成的表,例如:

代码语言:javascript
运行
复制
timestmp    log_error
1507031197631   Er7
1507031197621   Er8
1507031197409   Er9
1506888444602   Er10
1506880074401   Er10
1506880047684   Er10
1506880030996   Er10
1506879980929   Er10
1506879977580   Er10
1506879974250   Er10
1506879970901   Er10
1506879964241   Er10
1506879954212   Er10
1506879900817   Er10

我想编写一个SQL查询,它在时间戳的某个时间间隔(5分钟)内忽略相同的连续错误(在本例中是Er10)。我怎样才能做到这一点?使用自内连接?我想要的结果是:

代码语言:javascript
运行
复制
timestmp    log_error
1507031197631   Er7
1507031197621   Er8
1507031197409   Er9
1506888444602   Er10 /* The last one from this example, based on the difference in timestmp */
1506879900817   Er10 /* The first Er10 registry */
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-04 10:43:57

您可以使用lag()、累积和group by来完成这一任务。

代码语言:javascript
运行
复制
select log_error, min(timestamp), max(timestamp)
from (select l.*,
             sum(case when prev_le = log_error and
                           prev_timestamp > timestamp - "5 minutes"
                      then 0 else 1
                 end) over (order by timestamp) as grp
      from (select l.*,
                   lag(log_error) over (order by timestmp) as prev_le,
                   lag(timestmp) over (order by timestmp) as prev_timestmp
            from logs l
           ) l
     ) l
group by grp, log_error;

注意:无论逻辑是什么,- "5 minutes"都是用于这个目的的。这可能是5 * 605 * 60 * 1000

票数 0
EN

Stack Overflow用户

发布于 2017-10-04 10:47:47

可以使用row_number生成连续log_error值的组。这种方法被称为“塔比妥聚糖法”。

代码语言:javascript
运行
复制
select log_error, min(timestmp), max(timestmp)
from (
    select t.*,
        row_number() over (order by timestmp)
        - row_number() over (partition by log_error order by timestmp) as grp
    from your_table t
    ) t
group by log_error, grp;

我承认,结果格式并不完全是您想要的,但它有您需要的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46562775

复制
相关文章

相似问题

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