gpt4 book ai didi

Timescaledb:获取范围前后的第一个值

转载 作者:行者123 更新时间:2023-12-05 03:37:51 25 4
gpt4 key购买 nike

给定时间序列范围,其值 v0-v5 以不规则间隔存储在 timescaledb 中。

v0     v1    v2   v3   v4 
t0 - t1 - t2 - t3 - t4 - t5

选择了从 >=t2 到 <=t4 的范围,从而得到 v2 和 v3。

select time from table where time >= t2 and time <=t4 order by ASC

此外,我想获得范围之后的第一个和范围之前的第一个,因此 v1 和 v4。这些值不均匀,所以我不知道 t1 或 t4 是什么时候。可以是毫秒或年。

未测试,但我想我可以按照 TimescaleDB: efficiently select last row 中的说明执行此操作吗?

第一版

select time from table where time < t2 order by desc LIMIT 1

第四版

select time from table where time > t4 order by asc LIMIT 1

但这需要进行三个查询,是否有办法使其在 timescaledb 中更高效?

最佳答案

您可以使用子查询来实现此目的:(范围为 '2021-04-01 04:04:00' - '2021-04-01 04:07 的示例查询: 00')

SELECT time FROM table
WHERE
(time >= timestamp '2021-04-01 04:04:00' AND time <= timestamp '2021-04-01 04:07:00')
OR time = (SELECT time FROM table WHERE time < timestamp '2021-04-01 04:04:00' ORDER BY time DESC LIMIT 1)
OR time = (SELECT time FROM table WHERE time > timestamp '2021-04-01 04:07:00' ORDER BY time ASC LIMIT 1)
ORDER BY time

关于Timescaledb:获取范围前后的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69130614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com