You need to enable JavaScript to run this app. PostgreSQL查询能否基于Transaction表生成累计ballance字段
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL查询能否基于Transaction表生成累计ballance字段

逐行累计计算ballance字段的实现方案

可以直接通过PostgreSQL内置窗口函数完成计算,不需要修改原有表结构,仅通过查询语句就能输出完全符合规则的结果集。

核心计算逻辑

本次需求的逐行累计规则,本质是对每一行的take - give差值,按照id的排序顺序做纵向滚动累计求和,和PostgreSQL SUM() OVER()窗口函数的计算特性完全匹配。

可直接执行的查询语句

SELECT
  id,
  Usage,
  take,
  give,
  -- 按id顺序逐行累加take与give的差值
  SUM(take - give) OVER (ORDER BY id) AS ballance
FROM "Transaction"
ORDER BY id;

计算规则匹配验证

上述查询的实际计算过程和要求的规则完全对齐:

  • 首条记录无前置累计值,计算结果为当前行take - give = 10 - 0 = 10
  • 第二条记录自动承接上一行的累计值,计算逻辑为上一行累计值(10) + 当前行(take - give) = 10 + (0 - 40) = -30
  • 第三条记录同样承接上一行的累计值,计算逻辑为上一行累计值(-30) + 当前行(take - give) = -30 + (50 - 0) = 20

常见踩坑提醒

由于Transaction属于SQL通用保留关键字,查询时必须给表名加上双引号,否则PostgreSQL会触发语法解析错误,导致查询执行失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 08:18:00