Sei sulla pagina 1di 2

1. A student wants to enroll in Math 170 Discrete Mathematics.

If the student has already


taken the course and passed (grade of 2.0 or better), or taken and failed the course 2
times, they cannot enroll again.

/* Query can be applied to all students


SELECT DISTINCT studentid, e.courseid, name, grade,
(SELECT COUNT(grade)
FROM enrollment
WHERE grade = 'D' AND e.studentid = studentid AND e.courseid = courseid) AS fails,
CASE
WHEN (SELECT COUNT(grade)
FROM enrollment
WHERE grade = 'D' AND e.studentid = studentid AND e.courseid =
courseid) > 1
THEN 'Not eligible to enroll'
WHEN grade BETWEEN 'A' AND 'C' THEN 'Not eligible to enroll'
WHEN grade = 'D' THEN 'Eligible to enroll' END AS isEligible
FROM enrollment e
JOIN course c ON e.courseid = c.courseid
WHERE c.name = "Discrete Math"
UNION
SELECT DISTINCT studentid, '40132' AS courseid, 'Discrete Math' AS name, NULL AS grade,
0 AS fails,
IF(studentid NOT IN (SELECT studentid
FROM enrollment e
WHERE courseid = 40132), 'Eligible to enroll', '') AS isEligible
FROM enrollment e
WHERE studentid NOT IN (SELECT studentid
FROM enrollment e
WHERE courseid = 40132);
2. Find students enrolled in course ’Calculus 2’ in semester ’2017Sp’ who have taken and
passed with a grade of C or higher the required prerequisite course ’Calculus 1’.
SELECT s.studentid, s.lastname, s.firstname
FROM student s
JOIN enrollment e ON s.studentid = e.studentid
JOIN course c ON e.courseid = c.courseid
WHERE c.name = "Calculus 2" AND e.semester = "2017Sp" AND s.studentid IN
(SELECT studentid
FROM enrollment e
JOIN course c ON e.courseid = c.courseid
WHERE e.grade BETWEEN 'A' AND 'C' AND c.name = "Calculus 1");
3. There are 3 professors who teach Calculus 1: Smith, Lupin and Fenwick. We want to
compare the average Calculus 2 grade of students based on their teacher in Calculus 1. If a
student took Calculus 1 but did not take Calculus 2 don’t count them.
SELECT instructor AS InstructorCalculus1,
COUNT(t1.studentid) AS NumberTakingCalculus2,
ROUND(AVG(CASE grade
WHEN 'A' THEN 4.0
WHEN 'B' THEN 3.0
WHEN 'C' THEN 2.0
WHEN 'D' THEN 1.0
END), 2) AS AverageGradeCalculus2
FROM (SELECT studentid, instructor
FROM course c
JOIN enrollment e ON c.courseid = e.courseid
WHERE c.name = "Calculus 1") as t
JOIN (SELECT studentid, grade
FROM enrollment e
JOIN course c ON e.courseid = c.courseid
WHERE c.name = "Calculus 2") as t1 ON t.studentid = t1.studentid
GROUP BY instructor;

Potrebbero piacerti anche