Ежемесячная скользящая средняя SQL - PullRequest
0 голосов
/ 01 июня 2018

У меня есть таблица postgreSQL со столбцами:

  1. год [целое число 1960-2014]
  2. месяц [целое число 1-12] и
  3. столбец значения,[двойная точность]

год и месяц - это отдельные столбцы из-за входных данных, которые я не контролирую.Я мог бы объединить их в столбец datetime.

Теперь я хотел бы рассчитать скользящую среднюю за 10 лет.Скользящее среднее значение 10Y для января 1969 года должно быть AVG (январь 1960 года, январь 1961 года .. январь 1969 года) и т. Д.

Это то, что я имею до сих пор:

SELECT year,month, value,
    AVG(value)
        OVER(ORDER BY year ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) as ma10_value
FROM table_name

1 Ответ

0 голосов
/ 01 июня 2018

Использование Partition объяснено здесь

SELECT value, year, month,
  SUM(value)
    OVER(PARTITION BY month ORDER BY year ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) as ma2_value
FROM test01

SQLfiddle

...