PostgreSQL表移动平均值
我想创建一个移动平均线并存储结果。我可以从查询中创建一个新表,也可以添加一个包含结果的新列。首选的选项是什么?如果我想用移动平均线创建一个列,我如何才能做到这一点PostgreSQL表移动平均值,postgresql,moving-average,Postgresql,Moving Average,我想创建一个移动平均线并存储结果。我可以从查询中创建一个新表,也可以添加一个包含结果的新列。首选的选项是什么?如果我想用移动平均线创建一个列,我如何才能做到这一点 您可以创建一个具有如下结果的表 CREATE TABLE foo AS SELECT year, ptotww, AVG (ptotww) OVER(ORDER BY year ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as avg3_ptotww FROM
您可以创建一个具有如下结果的表
CREATE TABLE foo AS
SELECT year, ptotww,
AVG (ptotww)
OVER(ORDER BY year ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as avg3_ptotww
FROM ma_test
您可以创建一个具有如下结果的表
CREATE TABLE foo AS
SELECT year, ptotww,
AVG (ptotww)
OVER(ORDER BY year ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as avg3_ptotww
FROM ma_test
您可以创建一个视图
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
为了使新数据在视图中可见。您可以创建一个视图
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
以使新数据在视图中可见