题解 | #牛客直播开始时各直播间在线人数#

牛客直播开始时各直播间在线人数

https://www.nowcoder.com/practice/bdd30e83d47043c99def6d9671bb6dbf

# 时间:4/16 11:00 ~ 

# 明确问题:统计的是19:00 时刻的在线人数!
# 方法:maybe sum()over()进行累计统计  (no) 只需要筛选保留符合条件时间段的数据
# 不涉及
# 字段:course_id、course_name、online_num


# tb1:筛选时间段包含了19:00的数据\
with tb1 as(
    select distinct user_id , course_id ,course_name,course_datetime
    from attend_tb left join course_tb using(course_id)
    # where in_datetime =< course_datetime and out_datetime >= course_datetime
    where course_datetime between in_datetime and out_datetime
)

# tb2:聚合输出结果
select course_id,course_name,count(user_id) as online_num
from tb1
group by course_id,course_name

# 虽然这题不涉及累加统计最大在线人数
# 但是好像也可以用先标记后累加这种方式求解。
# 复习一下知识点:
# ① 标记进出uv:先设定进入的uv时刻为1,退出的uv时刻为-1【union all】
# ② 接着用进行分组累积求和,获取所有时刻的累计人数【sum()over(),按照文章id或直播间id进行分组,time和uv进行排序】

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务