EWMA在SQL中具有固定的窗口长度

时间:2018-03-07 13:56:51

标签: sql vertica moving-average

我想在固定窗口长度上计算SQL中的指数加权移动平均值。我有一些价格数据,让我们说我每30分钟就有一个价格。我想计算每个滴答的每日EWMA。即,使用最后48个数据点来计算EWMA。我正在使用Vertica,我知道有一个function。但是,这会覆盖所有数据,而不是特定长度的窗口。我尝试过以下方法:

EXPONENTIAL_MOVING_AVERAGE (close_price, 0.5) over (partition by id order by time_dts rows between 48 preceding and current row)

但它会产生错误:

  

[代码:2045,SQL状态:42P20] [Vertica] VJDBC错误:exponential_moving_average在其分析子句中不得包含WINDOWING子句

任何帮助都将不胜感激。

我正在尝试以下代码(基于Vertica文档中的表格):

select
     *
   , EXPONENTIAL_MOVING_AVERAGE (bid1, 0.5) over (partition by symbol order by time) as ewma
from
     (
        select
               symbol
             , time
             , bid1
          from
               ticker
          ) as a over (partition by symbol order by time rows between 48 preceding and current row)

看起来该函数不支持窗口框架(link)。还有另一种方法可以轻松计算EWMA吗?

0 个答案:

没有答案