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

QuestDB是否有LAG函数?是否内置相邻字段值差值计算功能?

QuestDB相邻行同字段差值查询说明

QuestDB目前没有和InfluxDB difference() 完全对齐的开箱即用专用函数,但可以通过内置的标准窗口函数 lag() 零成本实现完全相同的效果,无需额外开发自定义逻辑。

核心实现逻辑

lag() 函数支持获取当前行之前指定行数的同字段值,默认取前1行(也就是相邻的上一行),直接和当前行字段值做减法即可得到差值。

基础示例

假设你有序时表 sensor,包含时间戳字段 ts、需要计算差值的数值字段 val,查询语句如下:

SELECT
  ts,
  val,
  val - lag(val) OVER (ORDER BY ts) AS val_diff
FROM sensor;

分组计算场景

如果需要按不同维度分组计算差值(比如按设备ID、指标类型分别计算),只需要在窗口函数中增加 PARTITION BY 子句即可:

SELECT
  ts,
  device_id,
  val,
  val - lag(val) OVER (PARTITION BY device_id ORDER BY ts) AS val_diff
FROM sensor;

注意事项

  • 窗口函数中的 ORDER BY 必须明确指定,一般按时间戳排序,才能保证相邻行的顺序符合预期
  • 每个分组的第一行计算出来的差值会返回 null,因为没有上一行数据可供计算,和InfluxDB difference() 的默认行为一致
  • 该方案的性能和原生专用函数无明显差异,QuestDB对窗口函数做了针对性的时序优化,大数据量下也可以稳定运行

内容的提问来源于stack exchange,提问作者terminusfoundation 94

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:48:00