【发布时间】:2014-02-04 01:12:58
【问题描述】:
给定一个历史事件列表,每个事件都运行了几秒并且有一个不唯一的开始时间,我如何才能“最好”地确定发生最大事件数的时间范围? (在这种情况下,为了“最好”,数据集存储在 SQL 数据库中,所以我可能正在寻找能够平衡少量查询和向客户端返回小数据集的东西;其中可能有数百个事件审查的时间间隔。)
例如,给定这些事件:
- 活动 1 从 5 点开始,持续 10 分钟
- 活动 2 从 7 点开始,持续 4 分钟
- 赛事 3 从 9 点开始,持续 2 场
大多数事件发生在 9-10 次,其中 3 个事件同时发生。
想到的一种方法是迭代事件发生的整个时间间隔,并在每个点评估那里发生了多少事件,然后存储最大值;但肯定有一些更有效的方法。
【问题讨论】:
-
如果您为您的桌子提供
CREATE和一些示例INSERT可能会更好 -
查看源数据中的列会很有用。我认为您将需要创建另一个表并构建某种计划的汇总流程,以获取一组适合您尝试创建的报告的新数据。
-
计算出您的时间维度(秒?)...选择这个和一个计数,按您选择的相同时间维度分组,使用有或按计数排名前 1 位。如果不知道您的表格是什么样子,就不能做很多其他事情。
-
可能的开始时间和持续时间如何量化?在您的示例中,所有开始时间和持续时间都是整数,这立即建议使用数字表。只要有一些最小量,这甚至可以在更精细的时间上工作。
-
感谢您的反馈,伙计们。在编写任何代码之前我已经问过这个问题,所以实际上还没有模式 - 事实上,模式将部分地由任何方式决定,以便以这种方式访问数据。