Roy*_*mir 5 t-sql sql-server sql-server-2008
我有一张包含购买时间信息的表格.(用户购买一些东西......)
我需要创建一个间隔为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'
Run Code Online (Sandbox Code Playgroud)
所以结果应该是:
08:05:00 | 3 //in the last 5 min we had 3 purchases
08:10:00 | 2
08:15:00 | 1
Run Code Online (Sandbox Code Playgroud)
题 :
我是否必须创建一个临时表(或表variacble),它具有从08:00:00到结束的所有时间间隔才能执行此操作?(通过加入)
或者,这可以在没有任何包含所有可能值的表的帮助下进行
谢谢.
ps如果某个值在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |