【问题标题】:mysql: Count number of users accessing resourse for specific time based on 1 hour intervalmysql:基于1小时间隔计算特定时间访问资源的用户数
【发布时间】:2017-07-03 18:53:08
【问题描述】:

我有一个表 - 包含在检查时处于活动状态的用户 (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

(只计算 Mike、Ron 和 Joe - 因为他们的记录时间超过 5 分钟,而不包括 Rick 和 Mary,因为他们只记录了一次)。

提前致谢!

【问题讨论】:

    标签: mysql intervals hour accounting


    【解决方案1】:

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

     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
        )
    

    【讨论】:

    • 谢谢!问题的一部分是可以的。我需要一些方法来计算记录至少 5 分钟的用户。有什么想法吗?
    • 用 5 分钟用户回答 udpdate
    猜你喜欢
    • 1970-01-01
    • 2022-10-06
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多