Changes between Version 9 and Version 10 of OtherDevelopments


Ignore:
Timestamp:
06/15/26 01:29:40 (32 hours ago)
Author:
221296
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OtherDevelopments

    v9 v10  
    324324# After adding indexes, the execution time decreased from 944.483 ms to 171.114 ms. This shows that the added indexes significantly improved the execution of the yearly analysis query. The improvement is especially visible because the query joins multiple tables and processes 20000 quiz_attempt records.
    325325
    326 === Scenario 2: Monthly Analysis of Course Activity, Completions, Instructor Involvement and Student Success ===
     326=== Scenario 2: Monthly analysis of course activity, completions, instructor involvement, and student success within a given year ===
     327
     328{{{
     329WITH student_course_month_performance AS (
     330    SELECT
     331        EXTRACT(YEAR FROM qa.attempt_date) AS year,
     332        EXTRACT(MONTH FROM qa.attempt_date) AS month,
     333        c.course_id,
     334        qa.user_id,
     335        ROUND(AVG(qa.score), 2) AS avg_student_score
     336    FROM quiz_attempt qa
     337    JOIN quiz q
     338        ON q.quiz_id = qa.quiz_id
     339    JOIN lesson l
     340        ON l.lesson_id = q.lesson_id
     341    JOIN module m
     342        ON m.module_id = l.module_id
     343    JOIN course c
     344        ON c.course_id = m.course_id
     345    GROUP BY
     346        EXTRACT(YEAR FROM qa.attempt_date),
     347        EXTRACT(MONTH FROM qa.attempt_date),
     348        c.course_id,
     349        qa.user_id
     350),
     351course_month_performance AS (
     352    SELECT
     353        year,
     354        month,
     355        course_id,
     356        ROUND(AVG(avg_student_score), 2) AS avg_course_success
     357    FROM student_course_month_performance
     358    GROUP BY
     359        year,
     360        month,
     361        course_id
     362),
     363month_performance_summary AS (
     364    SELECT
     365        year,
     366        month,
     367        ROUND(AVG(avg_course_success), 2) AS final_month_success
     368    FROM course_month_performance
     369    GROUP BY
     370        year,
     371        month
     372)
     373SELECT
     374    EXTRACT(YEAR FROM e.enroll_date) AS year,
     375    EXTRACT(MONTH FROM e.enroll_date) AS month,
     376    COUNT(DISTINCT e.enrollment_id) AS total_enrollments,
     377    COUNT(DISTINCT CASE
     378        WHEN e.completion_status = 'COMPLETED' THEN e.enrollment_id
     379    END) AS completed_enrollments,
     380    COUNT(DISTINCT c.instructor_id) AS active_instructors,
     381    ROUND(AVG(scmp.avg_student_score), 2) AS avg_student_success,
     382    ROUND(AVG(cmp.avg_course_success), 2) AS avg_course_success,
     383    mps.final_month_success
     384FROM enrollment e
     385JOIN course c
     386    ON c.course_id = e.course_id
     387LEFT JOIN student_course_month_performance scmp
     388    ON scmp.year = EXTRACT(YEAR FROM e.enroll_date)
     389    AND scmp.month = EXTRACT(MONTH FROM e.enroll_date)
     390    AND scmp.course_id = e.course_id
     391    AND scmp.user_id = e.user_id
     392LEFT JOIN course_month_performance cmp
     393    ON cmp.year = EXTRACT(YEAR FROM e.enroll_date)
     394    AND cmp.month = EXTRACT(MONTH FROM e.enroll_date)
     395    AND cmp.course_id = e.course_id
     396LEFT JOIN month_performance_summary mps
     397    ON mps.year = EXTRACT(YEAR FROM e.enroll_date)
     398    AND mps.month = EXTRACT(MONTH FROM e.enroll_date)
     399GROUP BY
     400    EXTRACT(YEAR FROM e.enroll_date),
     401    EXTRACT(MONTH FROM e.enroll_date),
     402    mps.final_month_success
     403ORDER BY
     404    year,
     405    month;
     406
     407}}}
     408
    327409
    328410This query provides a month-by-month analytical overview of the platform for a selected year.