所以我有一个表,它给了我一个结果集,其中有代理和调用的持续时间。
当时间重叠时,我有点卡住了。见下表示例:
Agent |CallType |StartTime |EndTime |Duration(s) |Number
35171 |3 |06/01/2020 14:12:57 |06/01/2020 14:14:07 |70 |42572491
35171 |3 |06/01/2020 14:23:54 |06/01/2020 14:24:27 |33 |42572491
35171 |3 |06/01/2020 14:34:28 |06/01/2020 14:36:32 |124 |42572491
35171 |3 |06/01/2020 14:43:06 |06/01/2020 14:45:43 |157 |42572491
35171 |4 |06/01/2020 14:45:32 |06/01/2020 15:06:17 |1245 |42572491
我需要得到这个代理的总持续时间,这通常需要对持续时间列求和。但是,如果您查看最后一行,您可以看到startime在上一个调用(上面的行)结束前11秒开始,因此这不应该包括在总(sum)持续时间中。因此,应避免重叠。
关于如何在SQLServer中实现这一点的任何指导都是很好的。
1条答案
按热度按时间jum4pzuy1#
嗯。如果重叠是“简单的”,那么可以使用累积
min()
要获取下一个开始时间并使用它生成“调整后”的持续时间:简单地说,我的意思是没有电话完全“包含”了另一个电话。所以这是允许的:
但不是:
一般的重叠问题肯定是可以解决的,但它相当复杂。鉴于你的重叠是如此简单,这应该是好的。如果您需要更一般的解决方案,我建议您提出一个新问题,提供适当的样本数据和期望的结果。