我有很多会话用于同时运行的特定 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] 删除。
我来说两句