两个表window join之后各个window内某一列的top5个值之和?

shishiah_1888
  • 150

我的需求是红框里的这个值计算方式:window是蓝框选中的6个值,红框里是这6个值当中最大的5个值,这五个值求和是要的结果。
image

t1 = table(`A`A`B as sym, 09:56:06 09:56:07 09:56:06 as time, 10.6 10.7 20.6 as price)

t2 = table(take(`A,10) join take(`B,10) as sym, take(09:56:00+1..10,20) as time, (10+(1..10)\10-0.05) join (20+(1..10)\10-0.05) as bid, (10+(1..10)\10+0.05) join (20+(1..10)\10+0.05) as offer, take(100 300 800 200 600, 20) as volume);

wj(t1, t2, -5:0, sum of top 5 max(bid), `sym`time)

我应用的是DolphinDB软件。

回复
阅读 1k
2 个回答

可能需要自己写一个算法,思路是:内部一个N长度的sorted array,滚动的插入(插入排序快速算法应该很多了),滚动的做前/后M的运算。

滑动窗口计算:6个值求和,再减去6个中最小那个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进