文章目录
- 题目需求
- 思路一
- 实现一
- 题目来源
题目需求
根据用户登录明细表(user_login_detail),求出平台同时在线最多的人数。
期望结果如下(截取部分):
cn |
---|
7 |
需要用到的表:
用户登录明细表:user_login_detail
user_id(用户id) | ip_address(ip地址) | login_ts(登录时间) | logout_ts(登出时间) |
---|---|---|---|
101 | 180.149.130.161 | 2021-09-21 08:00:00 | 2021-09-27 08:30:00 |
102 | 120.245.11.2 | 2021-09-22 09:00:00 | 2021-09-27 09:30:00 |
103 | 27.184.97.3 | 2021-09-23 10:00:00 | 2021-09-27 10:30:00 |
思路一
实现一
-- 3)统计 最大同时在线人数
select max(current_cn) as cn
from (-- 2) 统计 同时在线人数select sum(flag) over (order by active_time) as current_cnfrom (-- 1) 标记 登录为1,登出为-1select user_id,login_ts as active_time,1 as flagfrom user_login_detailunion allselect user_id,logout_ts as active_time,-1 as flagfrom user_login_detail) t1) t2;
题目来源
http://practice.atguigu.cn/#/question/40/desc?qType=SQL