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

统计每个班级的关键指标

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

with a1 as(
    select 
    class_id,
    course_id,
    teacher_id,
    count(distinct student_id) as learners_active_m,
    COUNT(DISTINCT CASE WHEN finished_flag=1 THEN student_id END) as finishers_m,
    round((COUNT(DISTINCT CASE WHEN finished_flag=1 THEN student_id END))/(count(distinct student_id)),2) as completion_rate,
    SUM(watch_minutes) as total_minutes_m,
    round(coalesce(SUM(watch_minutes)/count(distinct student_id),0),2)  as avg_minutes_per_active,
    rank() over(partition by course_id order by (coalesce(SUM(watch_minutes)/count(distinct student_id),0)) desc) as rank_in_course
    from study_logs_ c 
    join course_class_ a using(class_id)
    where date_format(log_ts,'%Y-%m')='2024-08'
    group by class_id,course_id,teacher_id
),

a2 as(
    select 
    class_id,
    count(distinct student_id) as learners_enrolled
    from course_enroll_ b 
    group by 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_in_course
from a2 
join a1 using(class_id)
order by course_id,rank_in_course,class_id


全部评论

相关推荐

2025-12-19 19:02
西安交通大学 Java
程序员牛肉:双九,而且还是西交这种比较好的985九没必要再投日常了。你投中小厂,人家会觉得你学历这么顶还面试肯定是海投的,过了你也不去。所以不约你了。 直接准备暑期实习就好,现在你可以面试。但是目的不再是去日常实习了,而是熟悉面试节奏。 后续把精力放到八股,算法和AI知识上。抽空把自己这两个项目换了,怎么选项目可以看看我主页写的文章。 你学历不错的,不要焦虑
那些拿到大厂offer的...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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