Как рассчитать экспоненциальную скользящую среднюю в postgres?

Я пытаюсь реализовать экспоненциальную скользящую среднюю (EMA) на postgres, но по мере того, как я проверяю документацию и думаю об этом, тем больше я пытаюсь Я больше запутался.

Формула для EMA (x) такова:

EMA(x1) = x1
EMA(xn) = α * xn + (1 - α) * EMA(xn-1)

Кажется, она идеальна для агрегатора, сохранение результата последнего вычисленного элемента - это именно то, что здесь должно быть сделано. Однако агрегатор дает один единственный результат (как сокращение или свертывание), и здесь нам нужен список (столбец) результатов (в виде карты). Я проверял, как работают процедуры и функции, но AFAIK они производят один единственный результат, а не столбец. Я видел множество процедур и функций, но я не могу понять, как это взаимодействует с реляционной алгеброй, особенно при выполнении чего-то вроде этого, EMA.

Мне пока не повезло с поиском в Интернете. Но определение EMA довольно простое, я надеюсь, что можно перевести это определение во что-то, что работает в postgres, является простым и эффективным, потому что переход на NoSQL будет чрезмерным в моем контексте.

Спасибо.

PD: здесь вы можете увидеть пример:
https://docs.google.com / spreadsheet / ccc? key = 0AvfclSzBscS6dDJCNWlrT3NYdDJxbkh3cGJ2S2V0cVE

19
задан Andriy M 16 January 2012 в 15:13
поделиться