2016-03-04 120 views
0
month prices 
10 $25.15 
11 $41.53 
12 $72.19 
13 $33.16 
14 $33.95 
15 $43.87 

我在SQL來計算使用上述數據指數移動平均。我不知道該怎麼做。 TIA使用計算指數移動平均SQL

PS: EMA(n) = EMA(n−1) + ((2/(n + 1)) × (P(n) − EMA(n−1))) 

以上是下式:其中,我們可以取n = 6;

+0

什麼是預期的結果和你正在使用的RDBMS –

+0

@MotoGP我正在使用oracle –

回答

0

你的任務的最棘手的部分是純SQL聚合產品的計算(以供參考:有很多標準聚合函數,如求和(),MIN(),MAX()等,但沒有產品零件())。在描述一個可能的解決方案:聚合產品功能擴展了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,您可以構建數據表的自聯接並對當前的所有行應用計算。實際的實施將取決於您使用的特定數據庫。

希望這可能有所幫助。