source: .idea/queries/Query.sql@ 1eb7a55

Last change on this file since 1eb7a55 was 1eb7a55, checked in by Elena Markovska <elena.elenamarkovska@…>, 11 days ago

Initial commit - Scholaris project code

  • Property mode set to 100644
File size: 2.4 KB
Line 
1SELECT u.name AS university_name, f.name AS faculty_name, COUNT(DISTINCT p.id) AS total_professors, COUNT(DISTINCT s.id) AS total_subjects
2FROM university u JOIN faculty f ON u.id = f.university_id LEFT JOIN professor p ON f.id = p.facultyid LEFT JOIN subject s ON f.id = s.facultyid
3GROUP BY u.name, f.name
4ORDER BY total_professors DESC;
5
6SELECT s.name || ' ' || s.surname AS student_name, s.studentindex, f.name AS faculty_name, COUNT(DISTINCT ss.subject_id) AS enrolled_subjects, COUNT(DISTINCT a.student_id) AS advice_requests
7FROM student s JOIN faculty f ON s.facultyid = f.id LEFT JOIN student_subject ss ON s.id = ss.student_id LEFT JOIN advice a ON s.id = a.student_id
8GROUP BY s.id, s.name, s.surname, s.studentindex, f.name
9ORDER BY enrolled_subjects DESC;
10
11SELECT s.studentindex, s.name || ' ' || s.surname AS student_name, AVG(ss.final_grade) AS semester_gpa, COUNT(ss.subject_id) AS completed_courses_count
12FROM student s
13 JOIN student_subject ss ON s.id = ss.student_id
14 JOIN subject sub ON ss.subject_id = sub.id
15WHERE sub.semester = 2
16 AND ss.status = 'Completed'
17 AND ss.final_grade IS NOT NULL
18GROUP BY s.id, s.studentindex, s.name, s.surname
19HAVING COUNT(ss.subject_id) = (
20 SELECT COUNT(*)
21 FROM student_subject ss2
22 WHERE ss2.student_id = s.id
23)
24ORDER BY semester_gpa DESC;
25
26INSERT INTO subject (id, name, semester, facultyid)
27VALUES (999, 'Test Advanced Database', 2, 1);
28
29INSERT INTO student (id, name, surname, location, studentindex, facultyid)
30VALUES (999, 'Petar', 'Petrovski', 'Skopje', 123456, 1);
31
32INSERT INTO student_subject (student_id, subject_id, status, final_grade, enrollment_date, professor_id)
33VALUES (999, 999, 'Completed', 10, '2026-02-15', 1);
34
35
36WITH StudentGPA AS (
37 SELECT
38 s.studentindex,
39 s.name || ' ' || s.surname AS student_name,
40 EXTRACT(YEAR FROM ss.enrollment_date) AS enrollment_year,
41 AVG(ss.final_grade) AS cumulative_gpa,
42 RANK() OVER (
43 PARTITION BY EXTRACT(YEAR FROM ss.enrollment_date)
44 ORDER BY AVG(ss.final_grade) DESC
45 ) as gpa_rank
46 FROM student s
47 JOIN student_subject ss ON s.id = ss.student_id
48 WHERE ss.final_grade IS NOT NULL
49 GROUP BY s.studentindex, s.name, s.surname, EXTRACT(YEAR FROM ss.enrollment_date)
50)
51SELECT
52 enrollment_year,
53 studentindex,
54 student_name,
55 cumulative_gpa
56FROM StudentGPA
57WHERE gpa_rank = 1
58ORDER BY enrollment_year DESC;
Note: See TracBrowser for help on using the repository browser.