2011-08-14 14 views
3

以下の表を使用して、5期間移動平均、10期間移動平均、5期間指数移動平均の列を取得する方法MySQLで複数の移動平均を計算する方法

+--------+------------+ 
| price | data_date | 
+--------+------------+ 
| 122.29 | 2009-10-08 | 
| 122.78 | 2009-10-07 | 
| 121.35 | 2009-10-06 | 
| 119.75 | 2009-10-05 | 
| 119.02 | 2009-10-02 | 
| 117.90 | 2009-10-01 | 
| 119.61 | 2009-09-30 | 
| 118.81 | 2009-09-29 | 
| 119.33 | 2009-09-28 | 
| 121.08 | 2009-09-25 | 
+--------+------------+ 

答えて

2

例の5行移動平均は機能しません。 LIMIT演算子は、集計の対象となる行ではなく、戻りセットに適用されるため、集計値を変更しても集計値には違いはありません。

0
SELECT AVG(a.price) FROM (SELECT price FROM t1 WHERE data_date <= ? ORDER BY data_date DESC LIMIT 5) AS a; 

置き換えますか?あなたのMAが必要な日と一緒に。

0
SELECT t1.data_date, 
(SELECT SUM(t2.price)/COUNT(t2.price) as MA5 FROM mytable AS t2 WHERE DATEDIFF(t1.data_date, t2.data_date) BETWEEN 0 AND 6) 
FROM mytable AS t1 ORDER BY t1.data_date; 

10日MA

13に変更し6
関連する問題