2017-04-13 40 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;