再会,
我使用以下代码来计算 9 天移动平均线。
SELECT SUM(close)
FROM tbl
WHERE date <= '2002-07-05'
AND name_id = 2
ORDER BY date DESC
LIMIT 9
但它不起作用,因为它在调用 limit 之前首先计算所有返回的字段。换句话说,它将计算该日期之前或等于该日期的所有收盘价,而不仅仅是最后 9 个收盘价。
所以我需要从返回的选择中计算 SUM,而不是直接计算。
IE。从选择中选择 SUM...
现在我该怎么做?它的成本是否很高,或者有更好的方法吗?
如果您想要每个日期的移动平均值,请尝试以下操作:
SELECT date, SUM(close),
(select avg(close) from tbl t2 where t2.name_id = t.name_id and datediff(t2.date, t.date) <= 9
) as mvgAvg
FROM tbl t
WHERE date <= '2002-07-05' and
name_id = 2
GROUP BY date
ORDER BY date DESC
它使用相关子查询来计算 9 个值的平均值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)