SQL同时在线人数

:user_login_detail
字段:user_id login_ts(登入时间) logout_ts(退出登录时间)

需求:求同时在线人数

解决的核心是把同时在线人数当做一个实时变化的容器,登入一个人加1,退出一个人则减1,求这个容器的最大值

 



 

 1 select max(tpes) cn from (
 2     select 
 3      
 4      sum(flag) over(partition by ts) tpes 
 5      from (
 6         select user_id,login_ts ts ,1 flag from user_login_detail
 7         union all 
 8         select user_id,logout_ts ts ,-1 flag from user_login_detail
 9     ) a 
10 ) b 

 

posted on 2025-06-21 17:08  北京的小乔  阅读(29)  评论(0)    收藏  举报