Фильтр скользящего среднего в postgresql

У меня есть запрос, который вычисляет скользящее среднее в таблице за последние 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 последующие строки. Я не могу найти команду, которая учитывала бы последующие строки. Кто-нибудь может мне в этом помочь?


person Farhad Irani    schedule 25.01.2013    source источник
comment
ROWS BETWEEN 3 preceeding AND 3 following? postgresql.org/docs/current/static/   -  person a_horse_with_no_name    schedule 26.01.2013


Ответы (1)


Попробуй это:

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;
person a_horse_with_no_name    schedule 25.01.2013
comment
интересно, так это создаст скользящее среднее для 6 строк за раз для каждой строки? - person mc.; 06.08.2014