gpt4 book ai didi

database - 如何找到数据点最多的一小时?

转载 作者:太空狗 更新时间:2023-10-30 01:44:38 28 4
gpt4 key购买 nike

我有一个包含数十万条论坛帖子的数据库表,我想找出包含最多帖子的一小时时段。

我可以一次向前爬行一分钟,保留一组时间戳并跟踪其中最多的一小时,但我觉得有更好的方法可以做到这一点。我将对一年的帖子运行此操作,因此检查一年中的每一分钟似乎非常糟糕。

理想情况下,有一种方法可以在单个数据库查询中执行此操作。

最佳答案

给定一个表,其中包含您对 Minutes 感兴趣的一年中的每一分钟,以及一个包含 Time 列的表 Posts:

select top 1 minutes.time, count (posts.time)
from Minutes
left join posts on posts.time >= minutes.time AND posts.time < dateadd(hour, 1, Minutes.Time)
group by minutes.time
order by count (posts.time) desc

要解决生成分钟表的问题,可以使用类似ufn_GenerateIntegers. 的函数。那么函数就变成了

select top 5 minutes.time, count (posts.time)
from (select dateadd(minute, IntValue, '2008-01-01') as Time from ufn_GenerateIntegers(525600)) Minutes
left join posts on posts.time >= minutes.time AND posts.time < dateadd(hour, 1, Minutes.Time)
group by minutes.time
order by count(posts.time) desc

我刚刚对大约 5000 个随机帖子进行了测试,在我的机器上花费了 16 秒。因此,对于偶尔的一次性查询来说,这不是微不足道的,但也不是可笑的。幸运的是,这是一个数据点,您可以每天甚至每月计算一次并缓存,如果您想经常显示该值。

看看lassevk's improvement .

关于database - 如何找到数据点最多的一小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/508444/

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