gpt4 book ai didi

sql-server - 统计Sql服务器中的事件?

转载 作者:行者123 更新时间:2023-12-02 23:42:35 27 4
gpt4 key购买 nike

我有一个包含购买时间信息的表格。 (用户购买一些东西...)

我需要创建一个时间间隔为 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

问题:

我是否必须创建一个临时表(或表变量),其中包含从 08:00:00 到当天结束的所有时间间隔才能执行此操作? (通过加入)

或者,这可以在没有包含所有可能值的表的任何帮助下完成

谢谢。

附:如果一个值恰好位于 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

关于sql-server - 统计Sql服务器中的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11602414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com