PostgreSQL Начисление значений постепенно - PullRequest
0 голосов
/ 27 марта 2020

В моей базе данных PostgreSQL есть функция, которая при вызове

select * from schema.function_name($1,$2,$3);

возвращает таблицу, подобную следующей

calculation_date | value | increment
2020-01-01       |  1    |  0.5
2020-01-02       |  NULL |  NULL
2020-01-03       |  NULL |  NULL
2020-01-04       |  NULL |  NULL
2020-01-05       |  4    |  2
2020-01-06       |  NULL |  NULL
2020-01-07       |  NULL |  NULL
2020-01-08       |  8.5  |  1

Как вы можете видеть данные, возвращаемые этой функцией может быть несопоставимым. Что я хотел бы сделать, так это запросить эту функцию, чтобы столбец value, когда NULL, увеличивался по возрастанию на основе последнего заполненного значения в столбце increment. Таким образом, в этом примере приведенная выше таблица будет преобразована в приведенную ниже

calculation_date | value | increment
2020-01-01       |  1    |  0.5
2020-01-02       |  1.5  |  NULL
2020-01-03       |  2.0  |  NULL
2020-01-04       |  2.5  |  NULL
2020-01-05       |  4    |  2
2020-01-06       |  6    |  NULL
2020-01-07       |  8    |  NULL
2020-01-08       |  8.5  |  1

Если у кого-нибудь есть какие-либо предложения относительно того, как я могу go добиться этого результата, я был бы признателен. Я использую v10. Если вам нужна дополнительная информация, не стесняйтесь спрашивать.

1 Ответ

0 голосов
/ 27 марта 2020

Я решил проблему в конце, взяв последнее значение приращения перед любым нулем и умножив его на разницу в днях от даты этой строки до даты каждой последующей строки, а затем добавив ее к предыдущему значению. Это работает в этом случае, так как мне гарантирован ежедневный временной ряд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...