Я пытаюсь реализовать экспоненциальную скользящую среднюю (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