我在SQLite中有这个表
Table [Ticks]
Fields: 2
[Value]: INT
[Time]: DATETIME
我想选择10小时值的窗口或分区,并对这些值求和,然后向前移动一行,对过去10小时的整个记录范围做同样的操作。
value字段包含-1或1
我怎样才能做到这一点?这是可能的窗口,分区查询?
您可以将time
转换为秒,然后使用range()
:
select t.*,
sum(value) over (order by strftime('%s', time) + 0
range between 35999 preceding and current row
) as sum_10hours
from ticks t;
strftime()
表达式将值转换为秒。距离当前行需要(106060 - 1)秒。
这是一把小提琴