我有一个SQLite3数据库,它有一个这样的表:
Time Val1 Val2 Val3
10:12:03 3.4 4.3 5
10:12:04 3.2 4.1 6
10:12:05 3.3 4.6 5
11:03:19 2.4 5.7 4
11:03:20 2.5 5.2 4
11:03:21 2.7 5.9 5
...
超过1秒的两行之间的时间范围意味着第一工作间隔的结束和第二工作间隔的开始。
所以,第一个工作间隔是10:12:03 - 10:12:05
。
第二个工作间隔是11:03:19 - 11:03:21
。
诸若此类。
我如何才能知道所有的时间戳开始间隔(10:12:03,11:03:19.)使用SQL?
发布于 2020-05-26 16:51:10
这是一个空白和岛屿问题:您希望显示与前一个不相邻的行(即每个岛的开始)。
下面是一种使用窗口函数的方法:
select t.*
from (
select
t.*,
lag(time) over(order by time) lag_time
from mytable t
) t
where
lag_time is null
or time > datetime(lag_time, '+ 1 second')
lag()
检索上一行的time
。然后,我们对与前一行(或没有先前记录)的差大于1秒的行进行筛选。
https://stackoverflow.com/questions/62026695
复制相似问题