我有一张桌子包含购买时间信息。 (用户购买一些东西...)
我需要创建一个时间间隔为 5 分钟的时间线,并且我需要在这 5 分钟的窗口中进行计数 - 进行了多少次购买(计数) - (不需要按用户分组))
起点=@startCheckingTime
其值为 08:00:00
终点=一天的结束。 (没关系:xx:59:59
或小于第二天00:00:00
)
该表是:
DECLARE @startCheckingTime DATETIME
SET @startCheckingTime='2010-01-01 08:00:00'
declare @t table
(
d DATETIME
)
INSERT INTO @t
SELECT '2010-01-01 08:02:00'
UNION ALL
SELECT '2010-01-01 08:04:00'
UNION ALL
SELECT '2010-01-01 08:05:00'
UNION ALL
SELECT '2010-01-01 08:06:00'
UNION ALL
SELECT '2010-01-01 08:07:00'
UNION ALL
SELECT '2010-01-01 08:12:00'
所以结果应该是:
08:05:00 | 3 //in the last 5 min we had 3 purchases
08:10:00 | 2
08:15:00 | 1
问题 :
Do I have to创建一个临时表(或表变量),其中包含从 08:00:00 到一天结束的所有时间间隔,以便执行此操作? (通过加入)
或者,可以这样做without任何帮助包含所有可能值的表
thanks.
附注如果一个值正好位于 xx:05:00 ,那么它属于哪个窗口并不重要,只要它对于所有项目都相同即可
尝试这个:
select dateadd(minute, m * 5, 0) as d,
count(*) as c
from (
select datediff(minute, 0, d) / 5 as m
from @t
where d >= @startCheckingTime and
d < dateadd(day, 1, cast(@startCheckingTime as date))
) T
group by m
order by m
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)