| | 18 | |
| | 19 | {{{ |
| | 20 | WITH course_year_performance AS ( |
| | 21 | SELECT |
| | 22 | EXTRACT(YEAR FROM qa.attempt_date) AS year, |
| | 23 | c.course_id, |
| | 24 | ROUND(AVG(qa.score), 2) AS final_grade_per_course |
| | 25 | FROM quiz_attempt qa |
| | 26 | JOIN quiz q |
| | 27 | ON q.quiz_id = qa.quiz_id |
| | 28 | JOIN lesson l |
| | 29 | ON l.lesson_id = q.lesson_id |
| | 30 | JOIN module m |
| | 31 | ON m.module_id = l.module_id |
| | 32 | JOIN course c |
| | 33 | ON c.course_id = m.course_id |
| | 34 | GROUP BY |
| | 35 | EXTRACT(YEAR FROM qa.attempt_date), |
| | 36 | c.course_id |
| | 37 | ), |
| | 38 | year_course_summary AS ( |
| | 39 | SELECT |
| | 40 | year, |
| | 41 | ROUND(AVG(final_grade_per_course), 2) AS final_year_success |
| | 42 | FROM course_year_performance |
| | 43 | GROUP BY year |
| | 44 | ) |
| | 45 | SELECT |
| | 46 | EXTRACT(YEAR FROM e.enroll_date) AS year, |
| | 47 | COUNT(DISTINCT c.instructor_id) AS total_instructor_activity, |
| | 48 | COUNT(DISTINCT e.user_id) AS total_students, |
| | 49 | COUNT(DISTINCT e.enrollment_id) AS total_enrollments, |
| | 50 | COUNT(DISTINCT qa.attempt_id) AS total_attempts, |
| | 51 | COUNT(DISTINCT CASE |
| | 52 | WHEN e.completion_status = 'COMPLETED' THEN e.enrollment_id |
| | 53 | END) AS completed_enrollments, |
| | 54 | COUNT(DISTINCT cert.certificate_id) AS total_certificates, |
| | 55 | ROUND(AVG(e.progress_percentage), 2) AS avg_student_success_within_courses, |
| | 56 | ROUND(AVG(qa.score), 2) AS avg_final_grade_per_course, ycs.final_year_success |
| | 57 | FROM enrollment e |
| | 58 | JOIN course c |
| | 59 | ON c.course_id = e.course_id |
| | 60 | LEFT JOIN certificate cert |
| | 61 | ON cert.enrollment_id = e.enrollment_id |
| | 62 | LEFT JOIN module m |
| | 63 | ON m.course_id = c.course_id |
| | 64 | LEFT JOIN lesson l |
| | 65 | ON l.module_id = m.module_id |
| | 66 | LEFT JOIN quiz q |
| | 67 | ON q.lesson_id = l.lesson_id |
| | 68 | LEFT JOIN quiz_attempt qa |
| | 69 | ON qa.quiz_id = q.quiz_id |
| | 70 | AND qa.user_id = e.user_id |
| | 71 | LEFT JOIN year_course_summary ycs |
| | 72 | ON ycs.year = EXTRACT(YEAR FROM e.enroll_date) |
| | 73 | GROUP BY |
| | 74 | EXTRACT(YEAR FROM e.enroll_date), ycs.final_year_success |
| | 75 | ORDER BY year; |
| | 76 | |
| | 77 | }}} |