SQL:求同时在线人数问题

题目

现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为:一个用户啥时进入了一个直播间,又在啥时离开了该直播间。

user_id

(用户id)

live_id

(直播间id)

in_date

(进入直播间的时间)

out_date

(离开直播间的时间)

1001

1

2024-02-21 19:30:00

2024-02-21 19:53:00

1002

1

2024-02-21 21:01:00

2024-02-21 22:00:00

1003

1

2024-02-21 19:36:00

2024-02-21 20:53:00

1004

2

2024-02-21 16:30:00

2024-02-21 16:53:00

1005

1

2024-02-21 19:51:00

2024-02-21 21:53:00

现要求统计各直播间最大同时在线人数,期望结果如下:

live_id

max_users

1

3

2

1

数据

values
(
(1001,1,'2024-02-21 19:30:00','2024-02-21 19:53:00'),
(1002,1,'2024-02-21 21:01:00','2024-02-21 22:00:00'),
(1003,1,'2024-02-21 19:36:00','2024-02-21 20:53:00'),
(1004,2,'2024-02-21 16:30:00','2024-02-21 16:53:00'),
(1005,2,'2024-02-21 19:51:00','2024-02-21 21:53:00')
)

参考

select
    live_id,
    max(user_count) max_user_count
from
(
  select
  user_id,
  live_id,
  sum(user_change) over(partition by live_id order by event_time) user_count
  from
  (
    select user_id,
    live_id,
    in_time event_time,
    1 user_change
    from test
    union all
    select user_id,
    live_id,
    out_time out_datetime,
    -1
    from test 
  )t1
)t2
group by live_id;

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值