0

我有一个超过 100,000 行的表,其中包含以下列:ID、时间和布尔值。
时间列将时间跟踪到秒。
我需要一个查询,从表的开始到结束每 5 分钟的时间间隔查找 Boolean = 1 的所有实例,然后按时间间隔对计数进行分组。

该表代表 4 小时的数据,所以我应该得到 48 行结果。
我正在使用 MS SQL Server。

我尝试了几种方法,但时间间隔逻辑让我很难过。

编辑:我想通了!

SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, timestamp)/5 * 5,0), COUNT(*)  
FROM table  
WHERE isrepeat = 1  
GROUP BY by DATEADD(MINUTE, DATEDIFF(MINUTE, 0, timestamp)/5 * 5,0)  
ORDER BY by 1
4

2 回答 2

2

这应该做。您可以按时间间隔/5 对结果进行分组。

select
cast(to_char(Time, 'mi') as int) / 5 * 5 || ' - ' || cast(to_char(Time, 'mi') as int) / 5 * 5 + 5 as "Interval",
count(1)
from tableName
where
Boolean = 1
group by
cast(to_char(Time, 'mi') as int) / 5
于 2012-11-02T04:49:14.743 回答
1
select * from tableName where Time 
BETWEEN DATEADD(minute, -5, current_timestamp)
AND current_timestamp
于 2013-12-08T06:04:51.657 回答