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