按 DATETIME 获取数据、计数和分组,其中日期间隔大于 X

杰克

我有很多会话用于同时运行的特定 API。API 会时不时地更新,导致所有会话终止。

发生这种情况时,每个会话都会向我的中央网站报告错误“830”。

数据最终看起来像这样:

uid------error-------date
41       830         2018-05-14 13:45:13
42       830         2018-05-14 13:45:14
43       830         2018-05-14 13:45:16
44       830         2018-05-14 13:45:23
46       830         2018-05-14 13:46:19
50       830         2018-05-15 04:12:49
80       830         2018-05-15 04:12:49
36       830         2018-05-15 04:12:50
91       830         2018-05-15 04:15:52
12       830         2018-05-15 07:45:11
88       830         2018-05-15 07:45:11
92       830         2018-05-15 07:45:12

因为它随时都可能发生,所以我需要能够根据下一位数据之间的差距对这些数据进行分组。

例如,这是我想用上面的数据获得的输出并输出(其中间隙> 10分钟):

update_date-----update_count
2018-05-14      1
2018-05-15      2

这是我迄今为止尝试过的:

select
    count(eresult) as error_count,
    CAST(added AS DATE) as error_date
from st__errors
where 1=1
and eresult = 20
group by date(added)
order by id desc

结果:

在此处输入图片说明

这对所有数据进行分组和计数,但不考虑差距和按日期差距分组,这是我卡住的地方。

我需要每天按每个错误日期之间的间隔对数据进行分组。我对自己的解释非常糟糕,但希望这些例子能更好地描述我想要实现的目标?

马吉德·阿克巴里

这将是一个非常慢的查询,但它是一个选项:

select    count(e.eresult) as error_count,
          CAST(e.added AS DATE) as error_date
from      st__errors as e
where (
       SELECT  TIME_TO_SEC(TIMEDIFF(e.added, ei.added)) 
       FROM    st__errors as ei WHERE ei.id = e.id - 1
      ) > 10
      and e.eresult = 20
group by date(e.added)
order by e.id desc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章