2017-04-13 36 views
0

在我的表中,我有5个数字。我想找到3个移动平均数。我使用查找postgresql中的平均数

查询

select avg(value) over(order by value rows between 3 preceding and 1 preceding) as average 
from test; 

我想我的查询开始的前三个值不会有3个以前的值从计算从第4个值平均发现。请建议。

+0

你想要一行中的每个单元格的数量的平均值,从一个低于第一个的行开始? –

回答

0

平均值将为前三个 - 它只会是NULL或基于少于3行。

但是,你可以用row_number()来做你想做的事情;

select (case when row_number() over (order by value) > 3 
      then avg(value) over (order by value rows between 3 preceding and 1 preceding) 
     end) as average 
from test;