【问题标题】:Data between two datetimes两个日期时间之间的数据
【发布时间】:2012-09-14 20:34:34
【问题描述】:

我在工作中试图解决这个问题最艰难。老实说,我什至不知道如何问这个问题。我想获取在同一时间发生的呼叫的峰值。

我尝试将日期范围分解为分钟(产生一个庞大的数据集)并计算在这些时间发生的呼叫但计数已关闭(我减少了 10 倍),因为我知道总来电。

1 | 2012-01-01 01:15:00.000 | 2012-01-01 01:16:00.000
2 | 2012-01-01 01:14:00.000 | 2012-01-01 01:17:00.000
3 | 2012-01-01 01:18:00.000 | 2012-01-01 01:20:00.000

在第一次通话日期时间范围内,发生了 2 次通话(本身和第 2 次通话)。与 2 相同。呼叫 3 在该日期时间范围内未发生呼叫。这非常简化,因为我们谈论的是一天中的日期时间范围,范围可能是几分钟或几秒钟。我需要找到每个月的高峰。所以对于这个例子,一月的峰值是 2(我不需要知道决定数字的日期范围)

【问题讨论】:

  • 请展示一些样本数据和想要的结果。
  • 请提供有关表格外观、示例输入数据和结果以及您尝试过的查询的信息。您所写的问题可以用多种方式解释。目前还不清楚您到底想要什么。
  • 我看看这个查询是否有效。
  • 基本上这是问题,但查询不起作用。它给出了“从字符串转换日期和/或时间时转换失败。”错误。

标签: sql sql-server-2008 datetime


【解决方案1】:

这是我的首选方式。它从呼叫开始或停止的所有时间列表开始,然后计算同时呼叫的数量:

with t as (
     select starttime as thetime, 1 as isstart, 0 as isend
     from calls
     union all
     select endtime, 0 as isstart, 1 as issend
     from calls
   ),
   t2 as (
     select thetime, row_number() over (order by thetime) as numcalls,
            isstart, isend,
            row_number() over (partition by isstart order by thetime) as cumstartsorends
     from t
    ),
   t3 as (
     select thetime,
            (case when isstart = 1 then cumstartsorends
                  else numcalls - cumstartsorends
             end) as numstarts,
            (case when isend = 1 then cumstartsorends
                  else numcalls - cumstartsorends
             end) as numends
      from t2
     )
select year(thetime) as yr, month(thetime) as mon,
       max(numstarts - numends) as maxcum
from t3
group by year(thetime), month(thetime)

这个查询真正想做的是每次(开始时间或结束时间)的累积总和。但是,直到 2012 年才支持。

所以,它起到了作用。它计算开始和停止的累积次数。但是,这些仅在开始时间或结束时间记录上。为了得到另一个值,它还计算总开始和停止,并减去这个值。因此,每个时间戳都有开始和停止的累积次数。区别在于并发调用的数量。

【讨论】:

  • 我不确定最后的格式是否正确。我将 t cte 转换为使用我的表格,但一切都中断了。
  • 当我说转换时,我将调用更改为仅包含 callid、startdatetime 和 enddatetime 以及 t 中的正确列的视图
  • @Antares 。 . .好的,这次我测试了查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多