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

PostgreSQL中计算当前值与前一个值的差值实现方法

PostgreSQL 查询:筛选指定字典数据并计算数值差值

需求分析

筛选Dictionary为Dict1的数据,新增一列展示当前Number与下一行Number的差值(最后一行无下一行时差值等于当前Number)。

最终查询语句

SELECT
    Name,
    Number,
    Dictionary,
    COALESCE(Number - LEAD(Number) OVER (ORDER BY Name), Number) AS "Difference value"
FROM your_table_name
WHERE Dictionary = 'Dict1';

关键函数说明

  • LEAD()窗口函数:按指定排序规则(这里用Name,可根据实际场景替换为时间、ID等字段)获取当前行的下一行Number值。
  • COALESCE():处理最后一行的NULL情况,当LEAD()返回NULL时,直接用当前Number作为差值,匹配期望结果。

执行结果

NameNumberDictionaryDifference value
Kate300Dict1100
Helena200Dict150
Michael150Dict1150

补充:若需计算与前一行的差值

如果实际需求是当前值与前一行的差值(而非下一行),只需将LEAD()替换为LAG()函数:

SELECT
    Name,
    Number,
    Dictionary,
    Number - LAG(Number) OVER (ORDER BY Name) AS "Difference value"
FROM your_table_name
WHERE Dictionary = 'Dict1';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:30:16