sql - 按日期间隔大于 X 的 DATETIME 获取数据、计数和分组
问题描述
我有很多针对一次运行的特定 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
推荐阅读
- javascript - PHP/AJAX/Mysql 生成的表链接无法正常工作
- python - 如何解决 FacetGrid 没有样式参数的事实?
- java - Minecraft 1.15.2 中的修改命令在给出参数时不断显示未知命令
- jquery - 如何在工具提示内容中添加不同的字体大小?
- python - 由于 pandas.io.common 未在 1.0.x 中导入 is_url 而导致 Pandas read_csv 错误
- unit-testing - 单元测试一个方法调用同一个类中的另一个方法
- sql - SQL 子查询错误,返回超过 1 个值
- vba - 将信息发送到剪贴板 - 旧方法失败 - 新方法
- c - 在可重入 Bison 生成的解析器中访问 yyout
- sql - 总和的 SQL 平均值