我有此表的示例数据:
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 ...
您需要先生成所需的时间范围,然后再生成left join
。这是一种方法:
如果不需要您的开始和结束来反映确切的范围,请执行以下操作:您可以使用类似DATEDIFF(minute, '2000-01-01', DateVal)/5
的分组,然后将MIN(DateVal)
和MAX(DateVal)
用作start
和end
。但是这些值将是该间隔中的第一个和最后一个事务,而不是该间隔的边界。
我们有一个行生成器,它从startDate的每个rangeSize生成日期。