【发布时间】:2020-02-29 12:27:26
【问题描述】:
我有一个数据库表,其中包含一分钟的开盘价、收盘价、最高价、最低价、交易量值。我使用的是 SQL Server 2017,但可以选择 2019 RC。
我正在尝试找到一个高效的 SQL Server 查询,可以将这些汇总到 5 分钟的窗口中,其中:
- Open = 窗口的第一个 Open 值
- 关闭 = 窗口的最后关闭值
- High = 窗口的最大 High 值
- Low = min 窗口的最小值
- 音量 = 窗口内的平均音量
理想情况下,此查询将考虑数据中的空白,即基于日期计算而不是计算前后行。
例如说我有(这里是 6 分钟的数据):
|时间 |打开 |关闭 |高 |低 |体积 | |-----------------|------|--------|------|-----|-- ------| | 2019-10-30 09:30 | 5 | 10 | 15 | 1 | 125000 | | 2019-10-30 09:31 | 10 | 15 | 20 | 5 | 100000 | | 2019-10-30 09:32 | 15 | 20 | 25 | 10 | 120000 | | 2019-10-30 09:33 | 20 | 25 | 30 | 15 | 10000 | | 2019-10-30 09:34 | 20 | 22 | 40 | 2 | 13122 | | 2019-10-30 09:35 | 22 | 30 | 35 | 4 | 15000 |未考虑在内,因为这将是下一个 5 分钟窗口的第一行我正在尝试编写一个可以给我的查询(这是 5 分钟聚合的第一个示例):
|时间 |打开 |关闭 |高 |低 |体积 | |-----------------|------|--------|------|-----|-- --------| | 2019-10-30 09:30 | 5 | 30 | 40 | 1 | 50224.4 |有什么建议吗?我用 OVER 子句及其 PARTITION / RANGE 选项将我的头撞到墙上
【问题讨论】:
-
如果您共享脚本以生成示例数据,那将是一个加分点!
-
请分享您的尝试。
标签: sql sql-server window-functions algorithmic-trading stockquotes