You are on page 1of 5

INF202 FINAL PROJECT

YERBOLAT ADILKHAN 220103171


1. List of Students and Their Enrollments

SELECT s.studentid, firstname, lastname, enrollmentid, enrollmentdate FROM students s


JOIN enrollments e ON s.studentid = e.studentid;

2. Retrieve a list of all students and the courses they are currently enrolled in, including course details.

SELECT s.studentid, firstname, lastname, coursecode, instructorid, enrollmentdate FROM students s


JOIN enrollments e ON s.studentid = e.studentid
JOIN courses c ON e.courseid = c.courseid;

3. Find the students who do not have assigned advisors.

SELECT studentid, firstname, lastname, advisorid FROM students WHERE advisorid IS NULL;

4. Identify the student(s) with the highest GPA and their academic records.

SELECT s.studentid, firstname, lastname, ROUND(AVG(CASE


WHEN t.grade > 94 THEN 4
WHEN t.grade > 89 THEN 3.66
WHEN t.grade > 84 THEN 3.33
WHEN t.grade > 79 THEN 3
WHEN t.grade > 74 THEN 2.66
WHEN t.grade > 69 THEN 2.33
WHEN t.grade > 64 THEN 2
WHEN t.grade > 59 THEN 1.66
WHEN t.grade > 54 THEN 1.33
WHEN t.grade > 49 THEN 1
ELSE 0
END), 2) AS GPA FROM students s
JOIN enrollments e ON e.studentid = s.studentid
JOIN transcripts t ON e.enrollmentid = t.enrollmentid
GROUP BY s.studentid, firstname, lastname
ORDER BY GPA DESC
LIMIT 1;

5. Calculate the average GPA for students in each major.

SELECT major, ROUND(AVG(GPA),2)FROM (SELECT major, ROUND(AVG(CASE


WHEN t.grade > 94 THEN 4
WHEN t.grade > 89 THEN 3.66
WHEN t.grade > 84 THEN 3.33
WHEN t.grade > 79 THEN 3
WHEN t.grade > 74 THEN 2.66
WHEN t.grade > 69 THEN 2.33
WHEN t.grade > 64 THEN 2
WHEN t.grade > 59 THEN 1.66
WHEN t.grade > 54 THEN 1.33
WHEN t.grade > 49 THEN 1
ELSE 0
END), 2) AS GPA FROM students s
JOIN enrollments e ON e.studentid = s.studentid
JOIN transcripts t ON e.enrollmentid = t.enrollmentid
GROUP BY major) AS sq1
GROUP BY major;

6. Determine which departments offer the most courses by counting the number of courses
offered in each department.

SELECT departmentname, count(courseid) AS coursenumber FROM


departments d JOIN courses c ON d.departmentid = c.departmentid
GROUP BY departmentname
ORDER BY coursenumber DESC;

7. List faculty advisors along with the students they advise.

SELECT a.advisorid, a.firstname, a.lastname, studentid, s.firstname, s.lastname FROM advisors a


JOIN students s ON s.advisorid = a.advisorid
ORDER BY advisorid;

8. Find the student groups with the most members and list the group names and member counts.

SELECT studentgroupname, count(*) FROM studentgroups sg


JOIN students s ON sg.studentgroupid = s.studentgroupid
GROUP BY studentgroupname
ORDER BY count DESC
LIMIT 5;

9. Calculate the occupancy rate of the university's student housing facilities.

SELECT ROUND((COUNT(*) FILTER (WHERE studentid IS NOT NULL) * 100.0) / COUNT(*), 2)


AS occupience
FROM housing;

10. Compute the average cost of meal plans for different student groups (e.g., freshmen, sophomores,
etc.).

SELECT studentcourse, ROUND(AVG(cost)) FROM mealplans GROUP BY studentcourse


ORDER BY studentcourse DESC;

11. Calculate the total tuition revenue generated by each academic department.

SELECT departmentname, sum(c.credits) * 24000 AS revenue FROM enrollments e


JOIN courses c ON e.courseid = c.courseid
RIGHT JOIN departments d ON c.departmentid = d.departmentid
GROUP BY d.departmentid
ORDER BY revenue DESC NULLS LAST;

12. Find the number of available library resources and the number checked out by students.

SELECT COUNT(*) FILTER (WHERE studentid IS NOT NULL) AS checkedout, COUNT(*) AS


numberofresources
FROM library;

13. Calculate the number of student visits to health services and their average visit duration.

SELECT COUNT(DISTINCT studentid) AS studentsnumber, ROUND(avg(visitdurationmin), 2) AS


averageduration
FROM healthservices;

14. List student achievements (awards, honors) and group them by the student's department.

SELECT departmentname, s.studentid, achievementname FROM studentachievements sa


JOIN students s ON sa.studentid = s.studentid
JOIN departments d ON s.departmentid = d.departmentid
ORDER BY d.departmentid;

15. Determine the percentage of students who have participated in internships.

SELECT ROUND((COUNT(*) FILTER (WHERE internshipid IS NOT NULL) * 100.0) / COUNT(*),


2) AS percentage
FROM students s LEFT JOIN internships i ON s.studentid = i.studentid;

16. Find the countries where students have studied abroad and the number of students in each country.

SELECT countryname, COUNT(*) FROM studyabroad GROUP BY countryname


ORDER BY count DESC;

17. List the upcoming campus events and their details, sorted by date.

SELECT eventname, eventplace, eventdate FROM studentevents WHERE eventdate >'2023-01-01'


ORDER BY eventdate;

18. Determine which departments produce the most employed alumni.

SELECT departmentname, ROUND(COUNT(*) FILTER(WHERE employed = true) * 100.0 /


COUNT(*),2) AS employedpercentage FROM alumni a
JOIN students s ON a.studentid = s.studentid
JOIN departments d ON s.departmentid = d.departmentid
GROUP BY d.departmentid ORDER BY 2 DESC;

19. Identify faculty members who have expertise in specific research areas, based on their academic
records.
SELECT firstname, lastname FROM instructors WHERE hasexpertise = TRUE;
20. Analyze the historical enrollment data to identify trends in student enrollment over the past few
years.

SELECT EXTRACT(YEAR FROM enrollmentdate) AS year, COUNT(*) AS numberofenrollments


FROM enrollments GROUP BY year ORDER BY year;

21. Verify if students enrolling in advanced courses meet the prerequisites by checking their transcript
records.

SELECT s1.studentid, coursecode,


CASE
WHEN takencourse IS NULL THEN FALSE
ELSE TRUE
END AS takenprerequisite
FROM
(SELECT studentid, coursecode, prereq FROM enrollments e JOIN courses c ON e.courseid =
c.courseid WHERE prereq IS NOT NULL) s1
LEFT JOIN (SELECT studentid, c2.coursecode AS takencourse FROM enrollments e2 JOIN courses
c2 ON e2.courseid = c2.courseid) s2
ON s1.studentid = s2.studentid AND s1.prereq = s2.takencourse;

22. List students with outstanding fees, including the total amount owed.

SELECT studentid, SUM(amount) as balance FROM studentfees GROUP BY studentid HAVING


SUM(amount) < 0 ORDER BY balance;

23. Identify instructors who are teaching multiple courses in the same term and list the courses
they are teaching.

SELECT e.instructorid,firstname, lastname, COUNT(DISTINCT courseid) FROM enrollments e


JOIN instructors i ON e.instructorid = i.instructorid
GROUP BY e.instructorid, firstname, lastname HAVING COUNT(DISTINCT courseid) > 1 ORDER
BY count DESC;

24. Calculate statistics on student diversity, such as the distribution of gender, ethnicity, or nationality.

SELECT ethnicity, count(*) from admissions GROUP BY ethnicity;


SELECT gender, count(*) from admissions GROUP BY gender;

25. Find the most popular combinations of courses (sets of courses taken together) among students.

--

26. Compare the academic performance (GPA) of students based on their faculty advisors.

SELECT a.advisorid,a.firstname,a.lastname, ROUND(AVG(CASE


WHEN t.grade > 94 THEN 4
WHEN t.grade > 89 THEN 3.66
WHEN t.grade > 84 THEN 3.33
WHEN t.grade > 79 THEN 3
WHEN t.grade > 74 THEN 2.66
WHEN t.grade > 69 THEN 2.33
WHEN t.grade > 64 THEN 2
WHEN t.grade > 59 THEN 1.66
WHEN t.grade > 54 THEN 1.33
WHEN t.grade > 49 THEN 1
ELSE 0
END), 2) AS GPA FROM advisors a
JOIN students s ON a.advisorid = s.studentid
JOIN enrollments e ON e.studentid = s.studentid
JOIN transcripts t ON e.enrollmentid = t.enrollmentid
GROUP BY a.advisorid
ORDER BY GPA DESC;

27. Identify student groups that have members from a wide range of majors, promoting
interdisciplinary collaboration.

SELECT studentgroupname, COUNT(DISTINCT s.major) AS numberofmajors FROM studentgroups


sg
JOIN students s ON sg.studentgroupid = s.studentgroupid GROUP BY sg.studentgroupid
ORDER BY numberofmajors DESC
LIMIT 5;

28. List courses with consistently high enrollment, helping with scheduling and resource allocation.

SELECT coursecode, COUNT(*) as numberofenrollments FROM courses c


JOIN enrollments e ON c.courseid = e.courseid GROUP BY c.courseid ORDER BY
numberofenrollments DESC
LIMIT 5;

29. Calculate the average time it takes students to graduate, considering their major and any changes in
degree programs.

SELECT major, ROUND(AVG(EXTRACT(YEAR FROM graduationdate) - EXTRACT(YEAR


FROM admissiondate)),2)
FROM admissions a
JOIN graduation g ON a.studentid = g.studentid
JOIN students s ON a.studentid = s.studentid
GROUP BY major;

30. Determine if students who complete internships have a higher graduation rate compared to those
who do not.

You might also like