Мои данные выглядят так.
Таблица A
acccount_id | value | timestamp
-------------------------------
a12 | 122 | jan 1
a13 | 133 | jan 1
a14 | 443 | jan 1
a12 | 251 | jan 2
a13 | 122 | jan 2
a14 | 331 | jan 2
a12 | 412 | jan 3
a13 | 323 | jan 3
a14 | 432 | jan 3
У меня есть оконная функция, которая получает скользящее среднее и добавляет столбец
select account_id, value, "timestamp",
avg(value) over (partition by account_id order by "timestamp") as average
from the_table
order by account_id, "timestamp";
и выводит эту таблицу.
acccount_id | value | timestamp | Average
-----------------------------------------
a12 | 122 | jan 1 | 122
a13 | 133 | jan 1 | 133
a14 | 443 | jan 1 | 443
a12 | 251 | jan 2 | 188.5
a13 | 122 | jan 2 | 222.5
a14 | 331 | jan 2 | 387
a12 | 412 | jan 3 | 261.6
a13 | 323 | jan 3 | 192.6
a14 | 432 | jan 3 | 402
Мой вопрос:
Как сохранить этот новый столбец в таблице A?
Один из способов, которым я подумал сделать это, был:
(начало псевдокода)
BEGIN;
SELECT window_function FROM table_a INTO temp
ALTER TABLE table_a RENAME TO table_old;
ALTER TABLE temp RENAME TO table_a;
DROP table_old
COMMIT;
Не могли бы вы дать мне знать, как будет выглядеть выражение postgresql?