【发布时间】:2021-11-23 18:41:07
【问题描述】:
有很多关于使用 Postgres 计算运行总数的问题,但我正在努力做一些稍微不同的事情。
我有一张像这样的表
| txn_id | amount |
|---|---|
| String | Integer |
amounts 可以是正数也可以是负数。
我正在尝试返回一个看起来像这样的表
| txn_id | amount | running_total | overage_total |
|---|---|---|---|
| String | Integer | Integer | Integer |
其中运行总计是 amount 列的运行总和,只要金额大于零,overage_total 是低于零的金额的运行总和。
一个例子是
| txn_id | amount |
|---|---|
| a | 1 |
| b | 2 |
| c | -4 |
| d | 2 |
| e | -1 |
我一直在使用窗口函数来计算运行总和,但这并不是我们所需要的。
正确的表格会返回
| txn_id | amount | running_total | overage_total |
|---|---|---|---|
| a | 1 | 1 | 0 |
| b | 2 | 3 | 0 |
| c | -4 | 0 | 1 |
| d | 2 | 2 | 1 |
| e | -1 | 1 | 1 |
目前我正在代码中执行此操作,但如果可能的话,在数据库中执行此操作真的很不可思议。
【问题讨论】: