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

统计每个班级的关键指标

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

with a1 as (
    select class_id,count(distinct student_id) as learners_enrolled
    from course_enroll_ 
    group by class_id
),
a2 as (
    select class_id,
    count(distinct student_id) as learners_active_m,
    sum(watch_minutes) as total_minutes_m,
    round(ifnull(sum(watch_minutes)/nullif(count(distinct student_id),0),0),2) as avg_minutes_per_active
    from study_logs_
    where date_format(log_ts,'%Y-%m')='2024-08'
    group by class_id
),
a3 as (
    select class_id,count(distinct student_id) as finishers_m
    from study_logs_
    where date_format(log_ts,'%Y-%m')='2024-08' and finished_flag=1
    group by class_id 
),
a4 as (
    select cc.class_id,cc.course_id,cc.teacher_id,
    a1.learners_enrolled,
    coalesce(a2.learners_active_m,0) as learners_active_m,
    coalesce(a3.finishers_m,0) as finishers_m,
    round(ifnull(a3.finishers_m/nullif(a2.learners_active_m,0),0.00),2) as completion_rate,
    coalesce(a2.total_minutes_m,0) as total_minutes_m,
    coalesce(a2.avg_minutes_per_active,0) as avg_minutes_per_active
    from course_class_ cc
    left join a1 on cc.class_id=a1.class_id
    left join a2 on cc.class_id=a2.class_id
    left join a3 on cc.class_id=a3.class_id
)
select class_id ,course_id ,teacher_id ,learners_enrolled ,learners_active_m ,finishers_m ,completion_rate , total_minutes_m ,avg_minutes_per_active,rank() over(partition by course_id order by avg_minutes_per_active desc) as rank_in_course 
from a4 
order by course_id,rank_in_course,class_id;

全部评论

相关推荐

xtu大迫杰:偶遇校友,祝校友offer打牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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