实际上,我在使用 T-SQL 时遇到过这个问题,但它根本是一个逻辑和数学问题,所以我决定在这里试试运气。
我所拥有的是以下格式的一些数据:
Date Score
2012-11-01 12:11:50 12
2012-11-02 15:20:20 42
...
2012-11-15 20:32:21 21
所以,我们有准确的日期和每条记录的一些分数。接下来,用户输入一个数字 (1,2,3,...),该数字表示在多少个相等的时间段内对所有记录进行了潜水并对其中的分数求和。
所以,我现在正在做的是(假设用户想要 3 个句点):
- 获取第一条和最后一条记录的日期并计算它们之间的天数差异
- 将结果(假设我们有 30 天)除以期间的数量,以获得每个期间我有多少天。
- 计算每个周期的第一个日期,如第一个日期+(周期中的天数 * 周期序列号)
- 检查哪个时期是日期并在那里总结分数
起初这是可行的,但后来我遇到了很多问题,在这里我应该说,使用天作为周期测量非常重要,但是如果无法使用天来解决,我们可以使用小时或分钟来最小化错误。
以下是问题:
- 如果我有一条记录和多个时期,我的解决方案不起作用,因为在第 2 步中我们有(例如用户想要 3 个时期)1/3=0(因为我们正在处理天数和 1/3=~0.333 days=0(在 T-SQL 和 BIGINT 变量的上下文中)。因此,在第 3 步中,每个时期的第一个日期的计算将给我们三个相同的第一个日期。
- 如果我的间隔天数较小(例如第一个日期是 2012-12-01,最后一个日期是 2012-12-03,差异是三天),那么我将再次遇到同样的问题,如 T-例如 SQL 5/6 又是 0。
- 如果我有 10 个时期,但 11 天,那么其中一个时期将大 1 天。
因此,任务是将记录划分为相等的时间段,并对每个时间段的得分求和。我知道我的解决方案有多糟糕(使用这些日子),但我很开放,会欢迎每一个想法和建议。