You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QuestDB中使用时间绑定窗口函数?DuckDB查询迁移报错解决

DuckDB到QuestDB的时间窗口函数迁移方案

原DuckDB查询在QuestDB报错,核心原因是两者时间范围窗口的语法规则不同。QuestDB不支持RANGE BETWEEN INTERVAL ... preceding and current row这种写法,需要调整窗口子句的格式。

修改后的QuestDB查询语句

SELECT
    timestamp,
    symbol,
    price,
    first_value(price) OVER (
        PARTITION BY symbol
        ORDER BY timestamp ASC
        RANGE '3s' PRECEDING
    ) AS first_price
FROM trades
WHERE
    timestamp >= '2024-08-22T14:15:29.206'
LIMIT 40;

关键修改说明

  • 把原窗口子句里的RANGE BETWEEN INTERVAL 3 seconds preceding and current row替换为RANGE '3s' PRECEDING:
    • QuestDB中,RANGE '<时间间隔>' PRECEDING直接定义了"从当前行timestamp往前推指定时间范围,到当前行"的窗口,和原查询逻辑完全一致
    • 时间间隔也可以写全称,比如'3 seconds',效果和'3s'相同
  • PARTITION BY symbol和ORDER BY timestamp ASC保留原逻辑,确保按股票代码分区、按时间升序计算窗口
  • WHERE条件和LIMIT部分无需改动,和原查询保持一致

内容的提问来源于stack exchange,提问作者Nick The Greek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 22:28:22