【问题标题】:Query to group data by 5 second time intervals查询以 5 秒的时间间隔对数据进行分组
【发布时间】:2014-04-22 07:59:49
【问题描述】:

我有一张表,其中包含 1 小时内发生的事件。

2014-04-16 13:56:06.971 , 3474
2014-04-16 13:56:07.061 , 3609
2014-04-16 13:56:07.067 , 3617

表格有时间戳和事件 ID

我正在尝试对数据进行分组以计算以 5 秒为间隔发生的事件数,因此它看起来像这样:

0-5 sec., 3
5-10 sec. , 6
10-15 sec. , 4

提前致谢! 我正在使用 SQL Server 2008

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    您可以使用这样的查询:

    declare @Hour datetime = '2014-04-16 13:00:00' -- starting time
    
    select 
        CONVERT(VARCHAR(10), (DATEDIFF(second, @Hour, EventDateTime) / 5) * 5)
        + '-' + CONVERT(VARCHAR(10), (DATEDIFF(second, @Hour, EventDateTime) / 5 + 1) * 5) + ' sec', 
        COUNT(EventId) 
    from intervals
    group by DATEDIFF(second, @Hour, EventDateTime) / 5
    

    【讨论】:

      【解决方案2】:

      这样的事情怎么样,你按秒/12分组

      select 
        convert(varchar(5),[time stamp],108) as [hh:mm], 
        cast(min(datepart(s, [time stamp])) as varchar(10)) + ' - ' + cast(max(datepart(s, [time stamp])) as varchar(10)) as [second interval], 
        count(*) as total
      from yourtable
      group by convert(varchar(5),[time stamp],108), (datepart(s, [time stamp]) / 12)
      

      或者您可以创建一个包含开始/结束秒数的计数表,然后加入它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-07
        • 2016-08-09
        • 1970-01-01
        • 2018-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多