Вместо этого вы можете создать вид.
CREATE VIEW ma_test_vw AS
SELECT ma_test.*,
SUM(ptotww)
OVER(ORDER BY year ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as sum_ptotww
FROM ma_test
Однако, если данные меняются не так часто, пересчет их при каждом выполнении запроса может оказаться неоптимальным, поэтому в этом случае вместо этого можно создать материализованное представление.
CREATE MATERIALIZED VIEW ma_test_vw AS
SELECT ma_test.*,
SUM(ptotww)
OVER(ORDER BY year ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as sum_ptotww
FROM ma_test;
И затем после того, как вы изменили / добавили некоторые данные в исходную таблицу, вам нужно будет сделать:
REFRESH MATERIALIZED VIEW ma_test_vw
, чтобы новые данные были видны в представлении.