如何在 QuestDB 上使用滞后(偏移)窗口函数?

问题描述 投票:0回答:1

我知道QuestDB有一些窗口函数,但是

lag
仍然不支持。我一直在使用
LT JOINS
来获取上一行的值。这并不理想(查询比需要的更详细和连接性能),但它有效。

但是,我现在需要获取上一行和之前一行的值。有了

lag
我可以使用 offset 参数,但没有它我就迷失了。

有什么想法吗?谢谢

sql database time-series window-functions questdb
1个回答
0
投票

你是对的,

lag
不是当前实现的窗口函数之一,但是你可以使用窗口函数
first_value
。通过使用行偏移,您可以获得与使用
lag
相同的结果。

例如,如果你去questdb游乐场,你可以执行

SELECT *, 
FIRST_VALUE(price) OVER (PARTITION BY symbol ORDER BY timestamp rows BETWEEN 1 PRECEDING AND 1 PRECEDING) AS price_lag_1,
FIRST_VALUE(price) OVER (PARTITION BY symbol ORDER BY timestamp rows BETWEEN 2 PRECEDING AND 2 PRECEDING) AS price_lag_2
FROM 
trades 
WHERE timestamp IN '2023-11-30T10'
AND symbol = 'BTC-USD'

您应该获得前两行的价格以及每行的当前价格。

© www.soinside.com 2019 - 2024. All rights reserved.