Как добавить определенный столбец при вставке значения в Postgres - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь вставить значение и вычисляю значение, которое я вставил в один столбец.

пример, в основном у меня есть одна таблица с 3 столбцами, id, amount, total:

id | amount | total
1 | 100 | 100 
2 | 200 | 300
3 | -100 | 200

ожидаемый результат:

каждый раз, когда вводится новое значение amount, я хочу, чтобы значение в столбце total было добавлено с этим значением

INSERT INTO public.tb_total_amount
(id, amount, total, create_time)
VALUES(1, 100, balance+amount, NOW());

Можно ли накапливать отрицательное значение?и кто-нибудь может исправить мой запрос?спасибо

1 Ответ

0 голосов
/ 03 февраля 2019

Я рекомендую не делать этого, а вместо этого предлагаю просто использовать SUM в качестве аналитической функции:

SELECT
    id,
    amount,
    SUM(amount) OVER (ORDER BY id) total
FROM yourTable;

Логика, лежащая в основе этого ответа, заключается в том, что ваша скользящая сумма total получена, а неоригинал, данные.Следовательно, лучше просто вычислять его на лету, когда вам это нужно, а не хранить его.

Если вы действительно хотите вставить правильную сумму во время одной вставки, вы можете попробовать:

INSERT INTO public.tb_total_amount (amount, total, create_time)
SELECT
    100,
    (SELECT COALESCE(amount, 0) FROM public.tb_total_amount
     ORDER BY id DESC LIMIT 1) + 100,
    NOW();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...