查询按5秒的时间间隔对数据进行分组

时间:2014-04-21 23:49:20

标签: sql sql-server-2008

我有一张表,其中包含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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这样的事情怎么样,你按秒/ 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)

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