-- 思路:
--  1.对in_datetime与out_datetime编码 status:in观看人数+1,out观看人数-1,然后union all 结果为临时表temp
--  2.对表temp使用SUM窗口函数,按课程id维度,统计按时间戳升序的观看人数变化情况:
--      其中题目要求:如果同一时刻有进入也有离开时,先记录学员数增加再记录减少
--      则--    按照dt升序,status倒序统计    --
--  3.按照课程id分组,取每个课程同时在线观看的最大人数即可


--  3.按照artical_id分组,取每个文章同时在线阅读的最大人数即可
select
    t1.course_id,
    c.course_name,
    max(course_instant_unt) as max_num
from
    (
        select
            course_id,
            dt,
            sum(status) over (
                partition by
                    course_id
                order by
                    dt,
                    status desc
            ) as course_instant_unt
        from
            (
                select
                    user_id,
                    course_id,
                    in_datetime as dt,
                    1 as status
                from
                    attend_tb
                union all
                select
                    user_id,
                    course_id,
                    out_datetime as dt,
                    -1 as status
                from
                    attend_tb
            ) t
    ) t1
    join course_tb c on t1.course_id = c.course_id
group by
    t1.course_id,
    c.course_name
order by
    t1.course_id