gpt4 book ai didi

sql - 根据交易数据计算当前成员(member)余额

转载 作者:可可西里 更新时间:2023-11-01 08:00:47 27 4
gpt4 key购买 nike

我有一个 MySQL 金融交易表。

表格是这样的:

+----+-----------+--------+--------+---------+---------+
| id | member_id | status | amount | opening | closing |
+----+-----------+--------+--------+---------+---------+
| 1 | 2 | 1 | 1000 | 0 | 1000 |
| 2 | 2 | 2 | 100 | 1000 | 1000 |
| 3 | 2 | 1 | -20 | 1000 | 980 |
| 4 | 2 | 1 | 10 | 980 | 990 |
+----+-----------+--------+--------+---------+---------+

目前开始和结束字段是空的。状态 1 已提交,2 未提交。

谁能告诉我如何编写查询来扫描整个表并更新所有期初和期末余额?

此表中有将近 1,000,000 条记录,因此如果查询得到充分优化就更好了。此外,实时关键任务数据也不需要这样做。这只是成员余额的当前估计。

最佳答案

ajreal 的解决方案中存在一个疏忽 - 它不会为不同的成员 ID 重置余额变量。这个版本解决了这个问题。

这有效(我测试过):

set @clo:=0, @opn:=0, @mem:=0; 
update member_txns
set
opening=if(status=1, @opn:=if(@mem=(@mem:=member_id), @clo, 0), @clo),
closing=if(status=1, @clo:=@opn+amount, @clo)
order by member_id, id;

关于sql - 根据交易数据计算当前成员(member)余额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4231437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com