我尝试创建一个 Redshift / Postgres SQL 查询,它每天计算虚拟累积钱包金额。 这个钱包里有存款,钱包里有支出。花费可能超过钱包中的信用额度,但钱包不应该变成负数。最后,我需要每天从钱包中支出的金额,忽略任何用空钱包进行的支出。
我尝试了很多累积 SUM()
和 LAG()
窗口函数,但还没有得到预期的结果。我停留在需要计算一个值的点,包括前一行的这个值的计算结果,我不知道如何处理。
我真的很感激任何帮助!
示例表
天 | wallet_deposits | 支出 |
---|---|---|
2021-01-01 | 100 | 30 |
2021-01-02 | 0 | 40 |
2021-01-03 | 0 | 40 |
2021-01-04 | 0 | 65 |
2021-01-05 | 15 | 25 |
2021-01-06 | 60 | 20 |
2021-01-07 | 0 | 0 |
2021-01-08 | 0 | 25 |
2021-01-09 | 0 | 10 |
2021-01-10 | 15 | 25 |
预期结果
天 | wallet_deposits | 支出 | wallet_end_of_day | spent_from_wallet |
---|---|---|---|---|
2021-01-01 | 100 | 30 | 70 | 30 |
2021-01-02 | 0 | 40 | 30 | 40 |
2021-01-03 | 0 | 40 | 0 | 30 |
2021-01-04 | 0 | 65 | 0 | 0 |
2021-01-05 | 15 | 25 | 0 | 15 |
2021-01-06 | 60 | 20 | 40 | 20 |
2021-01-07 | 0 | 0 | 40 | 0 |
2021-01-08 | 0 | 25 | 15 | 25 |
2021-01-09 | 0 | 10 | 5 | 10 |
2021-01-10 | 15 | 25 | 0 | 20 |