考虑以下表,其具有的字段 - 编号(int)和DATE_CREATED(日期时间):

id       date_created

 1       2010-02-25 12:25:32
 2       2010-02-26 13:40:37
 3       2010-03-01 12:02:22
 4       2010-03-01 12:10:23
 5       2010-03-02 10:10:09
 6       2010-03-03 12:45:03

我想知道一天中最忙/最受欢迎小时这组数据。在这个例子中,我正在寻找的结果将是12。

想法?

有帮助吗?

解决方案 4

我都喜欢西蒙和彼得的答案,但我不能同时选择所接受。我结合2,使清洁查询只返回的流行小时(我不需要计数)。

SELECT hour(date_created) AS h 
FROM my_table 
GROUP BY h 
ORDER BY count(*) DESC 
LIMIT 1

其他提示

要得到的只是最流行小时,使用此查询

select date_format( date_created, '%H' ) as `hour`
  from [Table]
 group by date_format( date_created, '%H' )
 order by count(*) desc
 limit 1;

如果你想看看所有的数据,去与这一个

select count(*) as num_records
     , date_created
     , date_format( date_created, '%H' ) as `hour`
  from [Table]
 group by `hour`
 order by num_records desc;

如果你想要的东西多一点灵活的,也许是半小时或一刻钟,你可以做到以下几点:

SELECT floor(time_to_sec(date_created)/3600),count(*) AS period 
FROM table GROUP BY period ORDER BY c DESC

如果您想要最流行的2小时间隔,使用7200最流行每隔15分钟,用900你只需要记住你是(在一小时3600秒)处理秒。

使用hour()函数抽取小时,然后执行通常的聚合:

SELECT count(hour(date_created)) AS c, hour(date_created) AS h FROM table GROUP BY h ORDER BY c DESC;

您可以试试这个:

SELECT 
  DATE_FORMAT(date,'%H') as hours, 
  count(*) as count 
FROM 
  myTable 
GROUP BY 
  hours 
ORDER BY 
  count DESC
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top