当前位置:  开发笔记 > Android > 正文

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

如何解决《如何找到数据点最多的一小时?》经验,为你挑选了1个好方法。

我有一个包含数十万个论坛帖子的数据库表,我想知道什么时间段包含最多的帖子.

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

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



1> Eclipse..:

给出一个表格,其中包含您感兴趣的年份中的每一分钟Minutes以及Posts带有Time列的表格:

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的改进.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有