我有一张表给出了每次动作发生时的时间戳。从第一个动作开始,我想计算每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
答案 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