month prices
10 $25.15
11 $41.53
12 $72.19
13 $33.16
14 $33.95
15 $43.87
我必须使用 sql 中的上述数据计算指数移动平均线。我不知道该怎么做。 TIA
PS: EMA(n) = EMA(n−1) + ( ( 2 / ( n + 1 ) ) × ( P(n) − EMA(n−1) ) )
以上是我们可以采用n = 6;
的公式答案 0 :(得分:0)
您的任务中最棘手的部分是在纯SQL中计算聚合产品(因为FYI:有许多标准聚合函数,如Sum(),Min(),Max()等,但没有产品P( ))。一种可能的解决方案描述于:Aggregate Product函数扩展SQL(http://www.codeproject.com/Tips/137564/Aggregate-Product-function-extends-SQL) 基于数学方程:
N N
P(Xi)= Exp(SUM(Log(Xi)))
i=1 i=1
转换为以下SQL语句:
SELECT Exp(Sum(IIf([Num]=0,0,Log([Num]))))*IIf(Min([Num])=0,0,1) AS P
FROM Table1
您可以将此解决方案应用于您的问题。为了计算运行(移动)avg
,您可以构建数据表的自连接,并对当前所有行应用计算。实际实现取决于您使用的特定数据库。
希望这可能会有所帮助。