PostgreSQL中的移动平均滤波器

4

我有一个查询,可以在表中计算过去7天内的移动平均值。我的表格有两列:date_of_data是日期类型,是一系列以一天为间隔的日期序列;val是浮点数。

with B as
(SELECT   date_of_data, val
FROM mytable
group by date_of_data
order by date_of_data)
select
    date_of_data,val, avg(val) over(order by date_of_data rows 7 preceding)mean7
from B
order by date_of_data;

我想为7天计算一个移动滤波器。这意味着对于每一行,移动窗口将包含最近的3天、该行本身和3个后续行。我找不到命令来考虑后续行。有人能帮帮我吗?


ROWS BETWEEN 3 preceeding AND 3 following?请参考http://www.postgresql.org/docs/current/static/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS。 - user330315
1个回答

11

试一试:

select date_of_data, 
       val, 
       avg(val) over(order by date_of_data ROWS BETWEEN 3 preceding AND 3 following) as mean7
from mytable
order by date_of_data;

有趣,这样每次会为6行创建一个滚动平均值,对吗? - mc.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接