| | 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 | |