Sql Server-按特定间隔计数datetime组的出现次数

问题描述 投票:0回答:3

我有此表的示例数据:

MY_TABLE
------------------------------------------
ID    DateVal                other columns
------------------------------------------
1     2017-01-14 11:00:00    ...
2     2017-01-14 11:01:00    ...
3     2017-01-14 11:02:00    ...
4     2017-01-14 11:03:00    ...
5     2017-01-14 11:11:00    ... 
6     2017-01-14 11:11:30    ...
7     2017-01-14 11:15:00    ... 
8     2017-01-14 11:15:01    ...
9     2017-01-14 11:18:00    ...

我需要这样的结果:

start               end                 occurrences
-----------------------------------------------------------
2017-01-14 11:00    2017-01-14 11:05    4
2017-01-14 11:05    2017-01-14 11:10    0
2017-01-14 11:10    2017-01-14 11:15    3
2017-01-14 11:15    2017-01-14 11:20    2
...

具体来说,我需要一个查询,该查询在5分钟的范围内提取MY_TABLE中所有出现的Raw(范围值是可变的。)>

有人可以帮助我吗?

最诚挚的问候,

我有带有示例数据的此表:MY_TABLE --------------------------------------- --- ID DateVal其他列------------------------------------------ 1 2017-01-14 11:00:00 ...

sql sql-server datetime
3个回答
0
投票

您需要先生成所需的时间范围,然后再生成left join。这是一种方法:


0
投票

如果不需要您的开始和结束来反映确切的范围,请执行以下操作:您可以使用类似DATEDIFF(minute, '2000-01-01', DateVal)/5的分组,然后将MIN(DateVal)MAX(DateVal)用作startend。但是这些值将是该间隔中的第一个和最后一个事务,而不是该间隔的边界。


0
投票

我们有一个行生成器,它从startDate的每个rangeSize生成日期。

© www.soinside.com 2019 - 2024. All rights reserved.