用于获取用户最常见的小时数和/或周期的SQL语句

时间:2011-01-14 16:02:05

标签: sql datetime period hour

我是SQL Datetime的新手。

考虑到我在MySQL中有日期时间数据的记录(如下所示), 为特定用户(即john)获取这些记录最常出现的HOUR或范围/周期的最佳方法是什么?

ID      | Datetime            | User      | Activity
0    2010-03-29 13:15:56        john         visit
1    2010-03-29 13:13:14        ariel        visit
2    2010-03-29 13:09:13        john         visit
3    2010-03-29 13:07:21        john         visit
4    2010-02-23 12:21:03        john         visit
5    2010-02-23 12:01:03        john         visit
6    2010-02-23 11:01:03        john         visit
7    2010-02-23 02:01:03        john         visit

根据以上数据, john 进行访问的频繁时间是 13 ,而期间可能是12-13

目标是找到用户最常从事某项活动的时间段。

提前感谢所有帮助!

2 个答案:

答案 0 :(得分:0)

它可能取决于您正在使用的数据库,但在mysql中:

SELECT COUNT(id) as count, HOUR(Datetime) as hour FROM table GROUP BY hour ORDER BY count DESC LIMIT 1

(见http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

答案 1 :(得分:0)

使用oracle,您可以编写类似

的内容
select TO_CHAR(Datetime, 'HH24'), count(ID) from Table group by TO_CHAR(Datetime, 'HH24')

在其他RDBMS上使用等效函数从Datetime字段中提取小时部分。