ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 对网游用户平均在线时间的统计

对网游用户平均在线时间的统计

原创 Linux操作系统 作者:itpubluca 时间:2009-06-13 10:31:33 0 删除 编辑

某网游公司对用户最近24小时的用户平均在线时间进行统计
用户登入、登出的记录统计如下表(Table_1)所示 :
time     uid   action
2009-06-10 21:29:19.733 user1      login    
2009-06-10 21:29:54.123 user2      logout   
2009-06-10 21:30:04.840 user1      logout   
2009-06-10 21:30:20.140 user3      login    
2009-06-10 21:30:38.200 user1      login    
2009-06-13 09:44:38.107 user1      logout   
2009-06-13 09:45:01.483 user1      login    
2009-06-13 10:41:33.653 user1      logout   
2009-06-13 10:41:44.327 user1      login    
2009-06-13 10:10:49.293 user2      login    

如下代码实现:
第一步  建立临时表
create table #t2
( uid varchar(10),
time1 datetime,
time2 datetime
)
 insert into #t2

 select  a.uid,a.time as time1 , min(b.time) as time2
  from
   (select time,uid from Table_1 where action='login' ) a
left  outer join (select time,uid from Table_1 where action='logout') b
 on a.uid=b.uid and (a.time

group by a.time,a.uid
having DATEDIFF(hh,a.time,GETDATE())<24

查询临时表结果如下:
uid   time1     time2
user1      2009-06-13 09:45:01.483 2009-06-13 10:41:33.653
user1      2009-06-13 10:41:44.327 NULL
user2      2009-06-13 10:10:49.293 NULL


第二步   对#t2求用户的平均在线时间
time2为空说明该用户当前仍在线
select sum(DATEDIFF(S,time1,ISNULL(#t2.time2,getdate())))/COUNT(uid)/60 as avg_times from #t2

平均在线时间为 :
avg_times
41
平均在线时间为41分钟


 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21775700/viewspace-606180/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 开博 20090530
请登录后发表评论 登录
全部评论

注册时间:2009-05-30

  • 博文量
    4
  • 访问量
    8340