TimescaleDB 如何获得行之间的时间戳差异?

2022-01-30 14:48:33 标签 sqlpostgresqltimescaledb

假设你需要知道某物在一个时间范围内“活跃”了多长时间——(以时间戳为例,以分钟为单位)

timestamp, state
2.1, unavailable
3.5, active
6.8, wait
7.3, unavailable
9.3, active

对于0-15分钟的桶,答案是6。8-3。5 + 15-9。3 = 9。0分钟。(即第一个活动状态持续6。8-3。5分钟,下一个从9。3分钟到15分钟)。

你如何在TimescaleDB中做这样的事情?

###你的数据不符合隐含的数据类型(3。5不是时间戳)。然而,看起来你是在试图得到连续条目之间的差的和。如果是这样,使用lead函数获得下一个值(最后一个条目合并为15),然后对活动状态的差值求和。(见演示)

select sum(nts-ts) 
  from ( select ts ,coalesce(lead(ts) over( order by ts),15) nts, state from t) s
 where state = 'active' 
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码