题解 | 统计每个班级的关键指标

统计每个班级的关键指标

https://www.nowcoder.com/practice/07beee54ac62455586016ea1b018d371

with
    temp0 as (
        select
            cc.class_id,
            course_id,
            teacher_id,
            count(ce.student_id) as learners_enrolled
        from
            course_class_ cc
            left join course_enroll_ ce on cc.class_id = ce.class_id
        group by
            cc.class_id,
            course_id,
            teacher_id
    ),
    temp1 as (
        select
            cc.class_id,
            course_id,
            teacher_id,
            count(distinct student_id) as learners_active_m,
            count(distinct if(finished_flag = 1, student_id, null)) as finishers_m,
            round(
                count(distinct if(finished_flag = 1, student_id, null)) / count(distinct student_id),
                2
            ) as completion_rate,
            sum(watch_minutes) as total_minutes_m,
            round(
                sum(watch_minutes) / count(distinct student_id),
                2
            ) as avg_minutes_per_active
        from
            course_class_ cc
            left join study_logs_ sl on cc.class_id = sl.class_id
        where
            date_format(log_ts, '%Y-%m-%d') >= '2024-08-01'
            and date_format(log_ts, '%Y-%m-%d') <= '2024-08-31'
        group by
            cc.class_id,
            course_id,
            teacher_id
    )
select
    t0.class_id,
    t0.course_id,
    t0.teacher_id,
    learners_enrolled,
    ifnull(learners_active_m, 0) as learners_active_m,
    ifnull(finishers_m, 0) as finishers_m,
    ifnull(completion_rate, 0) as completion_rate,
    ifnull(total_minutes_m, 0) as total_minutes_m,
    ifnull(avg_minutes_per_active, 0) as avg_minutes_per_active,
    rank() over (
        partition by
            t0.course_id
        order by
            avg_minutes_per_active desc
    ) as rank_in_course
from
    temp0 t0
    left join temp1 t1 on t0.class_id = t1.class_id
    and t0.course_id = t1.course_id
    and t0.teacher_id = t1.teacher_id
order by
    t0.course_id,
    rank_in_course,
    t0.class_id asc;

全部评论

相关推荐

Cons_W:我9本的,同样找不到。感觉是岗位太少的问题,可能12月份没多少岗位的。
点赞 评论 收藏
分享
用微笑面对困难:你出于礼貌叫了人一声大姐,大姐很欣慰,她真把你当老弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务