mysql - 如何查找mysql表记录之间的时间间隔和间隔长度?
问题描述
我的表如下所示:
ID | 时间 |
---|---|
1 | 2021-07-17 17:44:26 |
2 | 2021-07-17 17:44:26 |
3 | 2021-07-17 17:44:26 |
4 | 2021-07-17 17:44:31 |
5 | 2021-07-17 17:44:31 |
6 | 2021-07-17 17:44:31 |
7 | 2021-07-17 17:44:36 |
8 | 2021-07-17 17:44:36 |
9 | 2021-07-17 17:44:36 |
10 | 2021-07-17 17:44:41 |
11 | 2021-07-17 17:44:41 |
12 | 2021-07-17 17:44:41 |
13 | 2021-07-17 17:44:51 |
14 | 2021-07-17 17:44:51 |
15 | 2021-07-17 17:44:51 |
16 | 2021-07-17 17:44:56 |
17 | 2021-07-17 17:44:56 |
18 | 2021-07-17 17:44:56 |
19 | 2021-07-17 17:45:02 |
20 | 2021-07-17 17:45:02 |
21 | 2021-07-17 17:45:02 |
我有 MySQL 8.0.21
总是接下来的 3 行有相同的时间,然后 beetwen 通常是 5 秒的时间间隔,如何找到所有超过 8 秒的间隔并计算间隔时间以获得类似的结果:
gap_id | gap_time_start | 间隙长度 |
---|---|---|
1 | 2021-07-17 17:44:41 | 10 |
解决方案
如果您使用的是 MySQL 8+,则可以LEAD()
像这样使用窗口函数:
select * from (
SELECT id as gap_id,
`time` as gap_start_time,
timediff( lead(`time`) over W, `time`) as gap_length
from `myTable` window w as (order by `time` asc)
) T where T.gap_length > 5;
输出:
12, 2021-07-17 17:44:41, 00:00:10
18, 2021-07-17 17:44:56, 00:00:06
参考:铅()
推荐阅读
- algorithm - 进一步简化并找到 c1 和 c2 (Big Theta)
- python - 模型权重没有更新,但损失正在减少
- windows - 获取计划任务以查看比上次运行更多的历史记录
- java - 我不希望特定行的字段根本不更新
- android - 在谷歌托管商店中发布私有应用程序是否应满足最低 API 级别要求?
- scala - 使用 Scala/pysprak 以及 Databricks 和存储在 ADLS 上的文件从 Zip 文件中的文件中读取内容
- checkbox - 减少数据网格中行的高度
- javascript - 如何将函数/事件处理程序从 React 传递给 Web 组件
- python - 生成具有正态分布的随机数
- delphi - 带有多个 AND 条件的 IF 语句出错