【发布时间】:2021-04-07 13:21:09
【问题描述】:
我正在尝试根据现有表格计算每日日内交易总数,该表格提供滚动五天窗口(仅限工作日)内的日内交易累计数。数据集非常简单,但是,如果不求助于无尽的子查询链,我似乎无法计算它。具有挑战性的部分是,在每个交易日结束时,五天前的当日交易总数现在到期并从滚动总数中删除。
这是我的数据集(表格):
这是我需要的最终结果:
请注意,底部以黄色突出显示的前四行(最旧的日期)非常容易计算,因为 11/09 是起点,之前没有当日交易,因此不会删除任何当日交易(过期)直到四个工作日后(11 月 13 日)。
从那里,我不知道该怎么办。似乎我尝试的任何东西都只是一个计算字段,需要在过去四行引用它自己(它自己的结果)。至少,部分计算会。计算本质上只是 = [截至今天的累积“日内交易”-(截至前一天的累积“日内交易”-四天前的“每日总计”)]。同样,数据集仅包含开始的工作日。递归 CTE 会为此工作吗?
备注 1:我不需要滚动累积“日间交易”字段的帮助。这已经为我自动填充了。我只需要“每日总计”的临时计算帮助(每天的新日交易。
备注 2:“日内交易”只是在同一天买入和卖出同一只股票。它是同一股票的买入和卖出订单的一对一匹配。
备注 3:解决方案需要与 IBM Netezza 规则兼容,最好。
【问题讨论】:
-
请避免使用图片。将示例数据作为格式化文本发布
-
窗口函数
SUM(...) OVER (PARTITION BY ... ORDER BY date ROWS 4 PRECEDING) -
要每天更新滚动号码,您必须每晚运行更新作业
-
请提供一些关于如何计算
daily_total的示例 -
另外,预计会缺少工作日吗?我在您的示例数据中找不到
2020-11-26THU
标签: sql-server tsql recursion recursive-query self-reference