【问题标题】:Finding records within a 5 min time interval in SQL在 SQL 中查找 5 分钟时间间隔内的记录
【发布时间】:2013-12-08 14:23:08
【问题描述】:

我有一个超过 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

【问题讨论】:

标签: sql sql-server time intervals


【解决方案1】:

这应该可以。您可以按时间间隔/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

【讨论】:

  • 这将是 ORACLE 的有效答案
【解决方案2】:
select * from tableName where Time 
BETWEEN DATEADD(minute, -5, current_timestamp)
AND current_timestamp

【讨论】:

    猜你喜欢
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多