繁体   English   中英

如何计算 MySQL 中的多个移动平均线

[英]How to calculated multiple moving average in MySQL

使用下表,如何获得 5 个周期移动平均线、10 个周期移动平均线、5 个周期指数移动平均线的列。

+--------+------------+
| 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 |
+--------+------------+

您示例中的 5 行移动平均线不起作用。 LIMIT 运算符适用于返回集,而不是聚合考虑的行,因此更改它对聚合值没有影响。

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

代替? 与您需要其 MA 的日期。

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;

将 6 更改为 13 为 10 天均线

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM