美好的一天,
我正在使用以下代码来计算9天移动平均线。
SELECT SUM(close) FROM tbl WHERE date <= '2002-07-05' AND name_id = 2 ORDER BY date DESC LIMIT 9
但这是行不通的,因为它会在调用限制之前先计算所有返回的字段。换句话说,它将计算该日期之前或等于该日期的所有关闭时间,而不仅仅是最后9个。
因此,我需要从返回的选择中计算出SUM,而不是直接计算出来。
IE浏览器 从SELECT中选择SUM …
现在我将如何去做,这是非常昂贵的还是有更好的方法?
使用类似
SELECT sum(close) as sum, avg(close) as average FROM ( SELECT (close) FROM tbl WHERE date <= '2002-07-05' AND name_id = 2 ORDER BY date DESC LIMIT 9 ) temp
内查询返回的所有过滤的行desc顺序,然后avg,sum向上的行返回。
desc
avg
sum
之所以query被你给不工作是由于该事实sum,首先计算和LIMIT后子句应用sum已经计算出来了,给你的sum所有行目前的
query
LIMIT