【发布时间】:2018-12-05 23:42:44
【问题描述】:
我有一个包含历史 FX 历史 1 分钟级别数据的表格,我想根据 1 分钟级别数据选择出 10 分钟数据。
我的表格如下所示:
ccy Time open high low close
AUDUSD 2018.03.26 00:00 0.77282 0.77283 0.77265 0.77265
AUDUSD 2018.03.26 00:01 0.77264 0.77266 0.77261 0.77266
AUDUSD 2018.03.26 00:02 0.77264 0.77265 0.77259 0.77264
AUDUSD 2018.03.26 00:03 0.77262 0.77262 0.7726 0.77262
AUDUSD 2018.03.26 00:04 0.77262 0.77262 0.77262 0.77262
AUDUSD 2018.03.26 00:05 0.7726 0.7726 0.7726 0.7726
AUDUSD 2018.03.26 00:06 0.77259 0.77262 0.77259 0.77261
AUDUSD 2018.03.26 00:07 0.77262 0.77265 0.77262 0.77264
AUDUSD 2018.03.26 00:08 0.77263 0.77272 0.77262 0.77272
AUDUSD 2018.03.26 00:09 0.77273 0.77278 0.77271 0.77274
AUDUSD 2018.03.26 00:10 0.77273 0.77282 0.77271 0.77279
AUDUSD 2018.03.26 00:11 0.77282 0.77293 0.77281 0.77291
AUDUSD 2018.03.26 00:12 0.77291 0.77293 0.77287 0.77287
AUDUSD 2018.03.26 00:13 0.77288 0.77288 0.77288 0.77288
AUDUSD 2018.03.26 00:14 0.77288 0.77288 0.77277 0.77279
AUDUSD 2018.03.26 00:15 0.77278 0.77279 0.77255 0.77262
AUDUSD 2018.03.26 00:16 0.77261 0.77271 0.77261 0.77271
AUDUSD 2018.03.26 00:17 0.77271 0.77273 0.77264 0.77271
AUDUSD 2018.03.26 00:18 0.77273 0.77282 0.77273 0.77281
AUDUSD 2018.03.26 00:19 0.77281 0.77285 0.77281 0.77283
如您所见,时间戳是每 1 分钟一次,超过 20 分钟的数据样本。
我的预期结果是:
ccy Time open high low close
AUDUSD 2018.03.26 00:00 0.77282 0.77283 0.77259 0.77274
AUDUSD 2018.03.26 00:10 0.77273 0.77293 0.77255 0.77283
开盘需要是时间跨度的每个起点的开盘价,例如从2018.03.26 00:00到2018.03.26 00:09,起点是2018.03.26 00:00 ,所以预期结果 open 是 2018.03.26 00:00 的开盘,也就是 0.77282。
收盘价需要为时间跨度的每个端点的收盘价,例如从2018.03.26 00:00到2018.03.26 00:09,端点为2018.03.26 00:09 ,所以预期结果收盘是 2018.03.26 00:09 的收盘价,即 0.77274。
high 需要是时间跨度的最大值。在高位列中,从 2018.03.26 00:00 到 2018.03.26 00:09,最大值为 0.77283,因此我的预期高位为 0.77283。
low 需要是时间跨度的最小值。在低位,从 2018.03.26 00:00 到 2018.03.26 00:09,最小值是 0.77259,所以我的预期低位是 0.77259。
我希望当我有更多数据时这可以继续循环。例如,如果我有 1 小时的数据,当我将数据聚合成 10 分钟的数据时,我预计会有 60/10 = 6 行记录。
我一直在研究这个问题,但找不到合适的解决方案,请有人帮忙吗?非常感谢!
【问题讨论】:
-
所以您需要查看过去特定数据窗口中的 min/max/last/first 值是多少?您能否提供查询返回的预期结果?
-
预期结果为:2018.03.26 00:00, 0.77282, 0.77279, 0.77283, 0.77259。如果有20分钟的数据,结果应该是两行,第二行应该是:2018.03.26 00:10, 0.77xxx, 0.77xxx, 0.77xxx, 0.77xxx。
-
使用哪个dbms?
-
我用mysql....
-
你之前尝试过什么?如果您使用的是 MS Sql,则可以使用 Row_Number 选择第 10 条记录(或每 10 条记录)