select
    cc.class_id,
    course_id,
    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 course_id order by avg_minutes_per_active DESC) as rank_in_course
from
    course_class_ as cc
    left join (
        select
            class_id,
            count(student_id) as learners_enrolled
        from
            course_enroll_ as ce
        group by
            class_id
    ) as t1 on cc.class_id = t1.class_id
    left join (
        select
            sl.class_id,
            count(
                distinct case
                    when finished_flag is not null then student_id
                    else null
                end
            ) 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 case
                        when finished_flag is not null then student_id
                        else null
                    end
                ),
                2
            ) as completion_rate,
            sum(watch_minutes) as total_minutes_m,
            round(
                sum(watch_minutes) / count(
                    distinct case
                        when finished_flag is not null then student_id
                        else null
                    end
                ),
                2
            ) as avg_minutes_per_active
        from
            study_logs_ as sl
        where
            log_ts between '2024-08-01' and '2024-08-31'
        group by
            class_id
    ) as t2 on t1.class_id = t2.class_id
ORDER BY course_id,rank_in_course,class_id ASC