Рассчитайте сумму денег, используя SQL - PullRequest
2 голосов
/ 11 апреля 2020

Я хочу посчитать, сколько денег у пользователя 1 на счету. У меня нет столбца с суммой денег, потому что я хочу вести простую двойную бухгалтерию.

Поэтому я хотел бы рассчитать ее на основе транзакций, выполненных в операции SQL в моем PostgreSQL база данных. Моя таблица выглядит примерно так:

  id  sender_id    recipient_id           amount_money
  --- -----------  ---------------------- -----------------
  1   1            2                      60.00
  2   1            2                      15.00
  3   2            1                      35.00

Если пользователь является отправителем, сумма должна быть вычтена. Иначе, если пользователь является получателем, сумма должна быть добавлена.

Таким образом, исходя из доступной таблицы, идентификатор пользователя 1 должен иметь: -40,00, а идентификатор пользователя 2 должен иметь: 40,00.

Как я могу сделать это на PostgreSQL, указав в аргументе только идентификатор пользователя? Я не могу программировать в SQL так хорошо, что могу справиться сам.

Кстати, это нормально делать с SQL? Бэкэнд моего приложения написан на NodeJS. Я сделал небольшой анализ и решил, что мой способ сэкономить будет в порядке, но я всего лишь программист с опытом работы в течение года.

1 Ответ

2 голосов
/ 11 апреля 2020

С условным агрегированием:

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 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...