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

统计每个班级的关键指标

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;

全部评论

相关推荐

2025-12-28 09:59
复旦大学 Java
点赞 评论 收藏
分享
2025-12-16 17:17
门头沟学院 产品经理
烤点老白薯:他第二句话的潜台词是想让你帮他点个瑞幸或者喜茶啥的
mt对你说过最有启发的一...
点赞 评论 收藏
分享
2025-12-27 22:21
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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