sum()over(前n行)语句在python3.7 sqlite3中不起作用

zazmityj  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(362)

我试着用以下公式计算n天移动: SELECT sum(Close) OVER (ROWS 10 PRECEDING) AS "10_Day_Sum" 来自mgc\ U每日
但出现以下错误:

  1. getNPointAverage
  2. sumVal = conn.execute('select SUM(Close) Over(ROWS {} PRECEDING) AS "N_Day_Sum" from {} where "Row Num" <= {}'.format(n,contract,day_index)).fetchone()
  3. sqlite3.OperationalError: near "(": syntax error

有什么建议吗?为什么?我试过改变陈述,当我删除 Over(ROWS {} PRECEDING) AS "N_Day_Sum" 然后它跑了,但我一放回去它就又断了。所以问题在于 OVER 声明。
谢谢!

cygmwpex

cygmwpex1#

一些笔记。 rows 10 preceding 实际上是为11行而不是10行添加值。你应该一直把 order by 在这样的逻辑中。所以:

  1. select sum(close) over (order by datecol rows 9 preceding) as N_Day_Sum
  2. from MGC_Daily;

在旧版本的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;

相关问题