我有一个表 - 包含在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分钟并且不计算里克和玛丽,因为他们只记录了一次)。
提前致谢!
答案 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
)