如何根据上线时间、下线时间,算出某时间段在线用户数

arvin丶 2015-01-23 11:03:17
有这样一个表。
记录了用户的登录时间,和下线时间
我如何统计某个时间段在线的用户数
(我是要统计出一天中每个时间段的在线人数)

...全文
678 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-01-23
  • 打赏
  • 举报
回复
你需要先建一张分组标志表(G),以按小时为例 flag 0 1 2 3 4 5 ..... 则有
select flag, count(*) as cnt
  from
    (select * from G left join tbl_name on G.flagt>=hour(acctstarttime)
       where G.flag<=hour(ifnull(acctstoptime,now())
    ) T
  group by 1
ifnull(acctstoptime,now()) 是为解决你 acctstoptime 可能为 null 的 如果不计算下线时间为空的是,之写作 acctstoptime 即可 select * from G left join tbl_name on G.flagt>=hour(acctstarttime) where G.flag<=hour(ifnull(acctstoptime,now()) 的作用,你观察一下就知道了。切忌冥思! 根据情况你还需加入过滤日期的代码
arvin丶 2015-01-23
  • 打赏
  • 举报
回复
引用 1 楼 fdipzone 的回复:
規則需要定好。 例如時間段是2015-01-01 12:00 ~ 2015-01-01 13:00 而用戶的上線時間,下線時間是 2015-01-01 11:00 ~ 2015-01-01 12:30:00 那麼在這個時間段中,用戶是在線還是離線呢?
这个算11:00-12:00一个,12:00-13:00一个。
傲雪星枫 2015-01-23
  • 打赏
  • 举报
回复
規則需要定好。 例如時間段是2015-01-01 12:00 ~ 2015-01-01 13:00 而用戶的上線時間,下線時間是 2015-01-01 11:00 ~ 2015-01-01 12:30:00 那麼在這個時間段中,用戶是在線還是離線呢?

21,892

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧