Sql 检查表中的一个时间序列列是否有两个相邻的时间点,其间隔是否大于某个长度
我正在处理一个包含时间序列列的表上的数据预处理 玩具示例表ASql 检查表中的一个时间序列列是否有两个相邻的时间点,其间隔是否大于某个长度,sql,postgresql,plpgsql,Sql,Postgresql,Plpgsql,我正在处理一个包含时间序列列的表上的数据预处理 玩具示例表A timestamp value 12:30:24 1 12:32:21 3 12:33:21 4 时间戳是有序的,并且总是递增的 当表有两个相邻的时间点,其时间间隔大于某个长度时,是否可以定义一个函数或其他内容来返回True表达式,否则返回False 我正在使用postgresql,谢谢你类似这样的东西: select count(*) > 0 from ( sele
timestamp value
12:30:24 1
12:32:21 3
12:33:21 4
时间戳是有序的,并且总是递增的
当表有两个相邻的时间点,其时间间隔大于某个长度时,是否可以定义一个函数或其他内容来返回True表达式,否则返回False
我正在使用postgresql,谢谢你类似这样的东西:
select count(*) > 0
from (
select timestamp,
lag(timestamp) over (order by value) as prev_ts
from table_a
) t
where timestamp - prev_ts < interval '1' minute;
它计算时间戳与其上一个时间戳之间的差异。时间戳的顺序由值列定义。外部查询然后统计差异小于1分钟的行数
滞后被称为窗口函数。有关这些方面的更多详细信息,请参见手册:
bool_或将在找到第一个真值后立即停止搜索
您的示例数据显示一个时间值。但它对时间戳的作用是相同的
select bool_or(bigger_than) as bigger_than
from (
select
time - lag(time) over (order by time)
>
interval '1 minute' as bigger_than
from table_a
) s;
bigger_than
-------------
t