使用SQL计算货币金额

使用SQL计算货币金额,sql,postgresql,Sql,Postgresql,我想数一数用户ID 1在他们的帐户上有多少钱。我没有一个列的金额,因为我想保持简单的复式簿记 因此,我想根据PostgreSQL数据库中SQL操作的事务来计算它。我的桌子看起来像这样: id sender_id recipient_id amount_money --- ----------- ---------------------- ----------------- 1 1 2

我想数一数用户ID 1在他们的帐户上有多少钱。我没有一个列的金额,因为我想保持简单的复式簿记

因此,我想根据PostgreSQL数据库中SQL操作的事务来计算它。我的桌子看起来像这样:

  id  sender_id    recipient_id           amount_money
  --- -----------  ---------------------- -----------------
  1   1            2                      60.00
  2   1            2                      15.00
  3   2            1                      35.00
如果用户是发件人,则应减去金额。 否则,如果用户是收件人,则应添加金额

因此,根据可用的表,用户id 1应为:-40.00,用户id 2应为:40.00

如何在PostgreSQL上做到这一点,在参数中只提供用户的id号?我不能很好地用SQL编程,以至于我自己也能处理它


顺便说一句,使用SQL可以这样做吗?我的应用程序后端是用NodeJS编写的。我做了一个小分析,认为我的省钱方式是不错的,但我只是一个有一年经验的程序员。

条件聚合:

select sum(case when recipient_id = 2 then 1 else -1 end * amount_money) total
from tablename
where 2 in (sender_id, recipient_id)
请参阅。
结果:

| total |
| ----- |
| 40.00 |