计算时间范围SQL之间列表中的项目

时间:2014-12-11 18:06:40

标签: sql tsql

我有一张表给出了每次动作发生时的时间戳。从第一个动作开始,我想计算每30分钟动作发生的次数。 例如,假设我有10条记录,有时会签名: 16:29,16:32,16:35,16:38,16:45,16:46 ,, 16:47,16:58,16:59,17:15

我希望回归如下:

16:00:1

16:30:8

17:00:1

如何在相应的时间段内正确分组这些项目? 我创建了一个临时表,它在列的最大值和最小值之间保持30分钟的间隔,但我希望它从第一个新的小时时间(:00)开始,并以30分钟的间隔从那里开始计数上面定义的记录

DECLARE @counter smalldatetime,
@startDate smalldatetime,
@endDate smalldatetime,
@interval int = 30

SET @startDate =
(SELECT MIN(date)
FROM table)

SET @endDate =
(SELECT MAX(date)
FROM table)

SET @counter = @startDate
DECLARE @returnDates TABLE (
[date] smalldatetime)

WHILE @counter <= @endDate
BEGIN
INSERT INTO @returnDates ([date])
VALUES (@counter)
SET @counter = DATEADD(n, @interval, @counter)

END

1 个答案:

答案 0 :(得分:1)

只有第二张桌子 表30

minAct,  min30  
00, 00
01, 00
...
29, 00
30, 30 
31, 30 
...
59, 30 

这只是处理会议记录

select table30.min30, count(*) 
  from time 
  join table30 
    on table30.minAct = time.min 
 group by table30.min30
相关问题