-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueriesA1.sql
More file actions
137 lines (116 loc) · 3.47 KB
/
QueriesA1.sql
File metadata and controls
137 lines (116 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
connect to cs348
-- QUESTION 1
SELECT DISTINCT S.snum,S.sname \
FROM student S \
WHERE (S.year = 2) \
AND EXISTS ( \
SELECT * \
FROM mark M, mark M1 \
WHERE (M.grade < 65) \
AND M.snum = S.snum \
AND M.cnum LIKE 'CS1__' \
AND (M1.grade < 65) \
AND M1.snum = S.snum \
AND M1.cnum LIKE 'CS1__')
-- QUESTION 2
SELECT DISTINCT P.pnum,P.pname \
FROM professor P \
WHERE (P.dept != 'PM') \
AND EXISTS ( \
SELECT * \
FROM class C \
WHERE (C.cnum = 'CS245') \
AND C.pnum = P.pnum \
AND NOT EXISTS ( \
SELECT * \
FROM mark M \
WHERE M.cnum = C.cnum \
AND M.section = C.section \
AND M.term = C.term ) )
--QUESTION 3 -- NEEDS fix
SELECT DISTINCT S.snum,S.sname,S.year \
FROM student S \
WHERE EXISTS ( \
SELECT * \
FROM enrollment E, mark M \
WHERE E.cnum = M.cnum \
AND E.snum = S.snum \
AND M.cnum = 'CS240' \
AND E.term = M.term \
AND E.section = M.section \
AND EXISTS ( \
SELECT * \
FROM mark M1 \
WHERE M1.cnum = 'CS240' \
AND M1.grade BETWEEN M.grade AND (M.grade + 5 ) ) )
-- QUESTION 4
SELECT DISTINCT S.snum,S.sname \
FROM student S \
WHERE (S.year > 2) \
AND EXISTS ( \
SELECT * \
FROM mark M \
WHERE M.snum = S.snum \
AND M.cnum LIKE 'CS%' \
AND NOT EXISTS ( \
SELECT * \
FROM professor P \
WHERE M.grade < 85 \
AND P.dept != 'CO' ) )
-- QUESTION 5 -- ASSUMING THE TIME is 24 Hour format
SELECT DISTINCT P.dept \
FROM professor P \
WHERE EXISTS ( \
SELECT * \
FROM class C \
where C.pnum = P.pnum \
AND EXISTS ( \
SELECT * \
FROM schedule S \
WHERE ( \
(S.day = 'Monday' \
AND (S.time LIKE "0%" \
OR S.time LIKE "10%" \
OR S.time LIKE "11%") ) \
OR \
(S.day = 'FRIDAY' \
AND (S.time LIKE "1%" \
AND S.time != "11:00" \
AND S.time != "11:30" \
AND S.time != "12:00" ) ) ) ) )
-- QUESTION 6
SELECT DISTINCT \
SUM(case when p.dept = 'PM' then 1 else 0 end) / count (*) as "Ratio of Profssors" \
FROM professor P \
WHERE ( P.dept = 'PM' OR P.dept = 'CS' ) \
AND EXISTS ( \
SELECT * \
FROM class C, mark M \
WHERE C.pnum = P.pnum \
AND C.cnum = M.cnum \
AND C.section = M.section \
AND C.term = M.term \
AND M.grade < 65 )
-- QUESTION 7
SELECT DISTINCT P.dept, C.cnum, C.term, ( SELECT COUNT(*) \
FROM enrollment E \
WHERE E.cnum = C.cnum \
AND E.term = C.term ) AS "ENROLL COUNT" \
FROM professor P, class C \
WHERE EXISTS ( \
SELECT * \
FROM professor P1, class C1 \
WHERE C1.pnum = P1.pnum \
AND (P1.dept = "CS" OR P1.dept = "PM") )
ORDER BY "ENROLL COUNT" DESC
-- QUESTION 8
SELECT DISTINCT (COUNT(*)/(SELECT COUNT(*) FROM professor WHERE dept = 'CS')) * 100 AS "Percent CS professor not teaching" \
FROM professor P \
WHERE P.dept = 'CS' \
AND NOT EXISTS ( \
SELECT * \
FROM class C, class C1 \
WHERE C.pnum = P.pnum \
AND C1.pnum = P.pnum \
AND C.term = C1.term \
AND C.pnum != C1.pnum )