Я хотел бы сделать скользящее среднее для поля с окном различной длины в зависимости от других характеристик данных. Это исключает оконную функцию SQL. Я думал, что могу просто написать JavaScript UDF для вычисления скользящего среднего с окном переменного размера. Однако для скользящего окна требуются значения из поля размера окна. Как лучше всего это сделать? Или, может быть, мне вообще не нужен javascript?
Пример: у меня есть таблица someData:
Day Value
1 3.5
2 5
3 7
4 10
5 12
. .
. .
. .
100 15
, и я хочу вычислить скользящее среднее значения Value с окном переменный размер x. Итак, когда x = 2, мой ожидаемый результат будет:
Rolling Average
3.5
4.25
6
8.5
11
.
.
.
Обновление:
Если бы я использовал фиксированное число, например 2, вместо переменной x, я мог бы просто используйте оконную функцию. Проблема в том, что я хочу, чтобы число менялось, например, в зависимости от дней. Допустим, мы определяем x как
(CASE WHEN MAX(day) > 99 THEN 2 ELSE 3 END) AS x
Я понимаю, что на вопрос уже дан ответ здесь .
Я мог бы просто сделать следующее:
(CASE WHEN MAX(day) > 99 THEN AVG(value) OVER(ORDER BY day RANGE BETWEEN 1 PRECEDING AND CURRENT ROW)
ELSE AVG(value) OVER(ORDER BY day RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) END)
AS rolling_average