mysql:根据1小时间隔计算特定时间访问资源的用户数

时间:2017-07-03 18:53:08

标签: mysql intervals hour accounting

我有一个表 - 包含在check(date_time)时处于活动状态的用户以及访问资源的用户的名称。我想计算使用该系统的用户,假设用户只有在超过5分钟的访问权限时才负责。

date_time           user_access
2017-06-24 09:01:59 mike
2017-06-24 09:04:13 mike
2017-06-24 09:07:13 mike
2017-06-24 09:11:14 joe
2017-06-24 09:18:17 ron
2017-06-24 09:24:10 rick
2017-06-24 09:25:24 ron
2017-06-24 09:39:16 ron
2017-06-24 09:44:07 ron
2017-06-24 09:51:44 mary
2017-06-24 09:54:27 joe
2017-06-24 09:58:55 joe

我希望结果是

date_time interval   user_count
2017-06-24 09:00     3
2017-06-24 10:00     0

(只计算迈克,罗恩和乔 - 因为他们被记录的时间超过5分钟并且不计算里克和玛丽,因为他们只记录了一次)。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您需要最后一小时的用户数

 select date(date_time), HOUR(date_time), count(distinct user)
 FROM  my_table 
 date_time >= date_sub(NOW(), interval 1 hour)
 group by date(date_time), HOUR(date_time)

并且应该选择记录超过5分钟的用户的结果

    select date(date_time), HOUR(date_time), count(distinct user)
    FROM  my_table 
    date_time >= date_sub(NOW(), interval 1 hour)
    group by date(date_time), HOUR(date_time)
    and user_access in (  
      select user_access  
      from my_table
      where timediff(max(date_time), min(date_time))/60 > 5
      group by user_access
    )