我试着用以下公式计算n天移动: SELECT sum(Close) OVER (ROWS 10 PRECEDING) AS "10_Day_Sum"
来自mgc\ U每日
但出现以下错误:
getNPointAverage
sumVal = conn.execute('select SUM(Close) Over(ROWS {} PRECEDING) AS "N_Day_Sum" from {} where "Row Num" <= {}'.format(n,contract,day_index)).fetchone()
sqlite3.OperationalError: near "(": syntax error
有什么建议吗?为什么?我试过改变陈述,当我删除 Over(ROWS {} PRECEDING) AS "N_Day_Sum"
然后它跑了,但我一放回去它就又断了。所以问题在于 OVER
声明。
谢谢!
1条答案
按热度按时间cygmwpex1#
一些笔记。
rows 10 preceding
实际上是为11行而不是10行添加值。你应该一直把order by
在这样的逻辑中。所以:在旧版本的sqlite中,可以使用相关子查询来表示:
选择(select sum(d2.close)from(select d2.*from mgc\ U daily d2 where d2.datecol<=d.datecol order by datecol desc limit 10))作为n\ U day\ U sum from mgc\ U daily d;