Changes between Version 2 and Version 3 of Analytical and statistical querying


Ignore:
Timestamp:
02/10/25 01:15:46 (13 days ago)
Author:
206046
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Analytical and statistical querying

    v2 v3  
    1010WHERE sub.progress_score < (SELECT AVG(progress_score) FROM Submission);
    1111}}}
     12
     13== Find Students Who Attended Less Than 50% of Their Classes ==
     14
     15{{{#!sql
     16SELECT s.id_student, u.username,
     17       (COUNT(a.attended) FILTER (WHERE a.attended = TRUE) * 100.0 / COUNT(*)) AS attendance_rate
     18FROM Attendance a
     19JOIN Student s ON a.id_student = s.id_student
     20JOIN User u ON s.id_user = u.id_user
     21GROUP BY s.id_student, u.username
     22HAVING (COUNT(a.attended) FILTER (WHERE a.attended = TRUE) * 100.0 / COUNT(*)) < 50;
     23}}}
     24
     25== Find the Most Enrolled Course ==
     26
     27{{{#!sql
     28SELECT c.id_Course, s.name AS subject_name, COUNT(e.id_enrollment) AS total_enrollments
     29FROM Enrollment e
     30JOIN Course c ON e.id_Course = c.id_Course
     31JOIN Subject_Course sc ON c.id_Course = sc.id_Course
     32JOIN Subject s ON sc.id_subject = s.id_subject
     33GROUP BY c.id_Course, s.name
     34ORDER BY total_enrollments DESC
     35LIMIT 1;
     36}}}
     37
     38== Get the Percentage of Students Who Completed a Course ==
     39{{{#!sql
     40SELECT c.id_Course, s.name AS subject_name,
     41       COUNT(CASE WHEN e.status = 'Completed' THEN 1 END) * 100.0 / COUNT(*) AS completion_rate
     42FROM Enrollment e
     43JOIN Course c ON e.id_Course = c.id_Course
     44JOIN Subject_Course sc ON c.id_Course = sc.id_Course
     45JOIN Subject s ON sc.id_subject = s.id_subject
     46GROUP BY c.id_Course, s.name;
     47}}}
     48