如何使用一个选择查询从转移表中获取每个参与者的余额?

时间:2018-11-26 16:41:41

标签: mysql sql

我有一个转帐表,如下所示:

transfer

enter image description here

我想从转账表中获取每个参与者的余额。

查询的输出应如下所示:

output

enter image description here

2 个答案:

答案 0 :(得分:1)

使用UNION ALLgroup by

select person, sum(b)
from
(
  select sender person, -amount b from transfer
  union all
  select recipient person, amount b from transfer
) t 
group by person

因此,如果该人分别是发送者和接收者,则每笔交易都被视为余额的减少和增加。

答案 1 :(得分:0)

您可以尝试以下操作:

select sender,(select sum(amount)
               from table1 b
               where b.recipient=a.sender)-sum(amount)
from table1 a
group by sender

对于每个发件人,您得到的是他作为发件人得到的金额的总和减去作为收款人得到的金额的总和。

编辑 有人告诉我,求和是取反的,他是对的,所以我改变了操作数的顺序。