【发布时间】:2019-11-25 00:12:57
【问题描述】:
初始表格
company time value
-------------------------
a 00:00:15.000 100
a 00:00:30.000 100
b 00:01:00.000 100
a 00:01:10.000 100
a 00:01:15.000 100
a 00:01:20.000 300
a 00:01:25.000 100
b 00:01:30.000 400
a 00:01:50.000 100
a 00:02:00.000 100
a 00:00:03.000 200
让t = 1 小时。
对于每一行,我都想回顾t的时间。
落入t 的条目将形成一个时间窗口。我想得到max(time window) - min (time window) / number of events)。
比如现在是12:00,一共有五个事件12:00, 11:50, 11:40, 11:30, 10:30,其中四个落在t的窗口内,即12:00, 11:50, 11:40, 11:30,结果就是12:00 - 11:30 / 4 .
此外,窗口应该只考虑具有相同值和公司名称的行。
结果表
company time value x
--------------------------------
a 00:00:15.000 100 0 (First event A).
a 00:00:30.000 100 15 (30 - 15 / 2 events).
b 00:01:00.000 100 0 (First event of company B).
a 00:01:10.000 100 55/3 = 18.33 (1:10 - 0:15 / 3 events).
a 00:01:15.000 100 60/4 = 15 (1:15 - 0:15 / 4 events).
a 00:01:20.000 300 0 (Different value).
a 00:01:25.000 100 55/4 = 13.75 (01:25 - 0:30 / 4 events).
b 00:01:30.000 400 0 (Different value and company).
a 00:01:50.000 100 40/4 = 10 (01:50 - 01:10 / 4 events).
a 00:02:00.000 100 50/5 = 10 (02:00 - 01:10 / 5 events).
a 00:03:00.000 200 0 (Different value).
任何帮助将不胜感激。如果有帮助,我问了一个类似的问题,效果很好:Sum values from the previous N number of days in KDB?
表格查询
([] company:`a`a`b`a`a`a`a`b`a`a`a; time: 00:00:15.000 00:00:30.000 00:01:00.000 00:01:10.000 00:01:15.000 00:01:20.000 00:01:25.000 00:01:30.000 00:01:50.000 00:02:00.000 00:03:00.000; v: 100 100 100 100 100 300 100 400 100 100 200)
【问题讨论】:
标签: kdb