SHOW:
|
|
- or go back to the newest paste.
1 | CREATE DATABASE syit2; | |
2 | ||
3 | CREATE TABLE Students( | |
4 | student_id INT PRIMARY KEY, | |
5 | student_name VARCHAR(20), | |
6 | email VARCHAR(30), | |
7 | enrollment_date DATE); | |
8 | ||
9 | CREATE TABLE Courses( | |
10 | course_id INT PRIMARY KEY, | |
11 | course_name VARCHAR(20), | |
12 | instructor VARCHAR(20), | |
13 | start_date DATE, | |
14 | end_date DATE); | |
15 | ||
16 | CREATE TABLE Progress( | |
17 | progress_id INT PRIMARY KEY, | |
18 | student_id INT FOREIGN KEY REFERENCES Students, | |
19 | course_id INT FOREIGN KEY REFERENCES Courses, | |
20 | completed_modules INT, | |
21 | total_modules INT); | |
22 | ||
23 | SELECT * FROM Students | |
24 | ||
25 | SELECT * FROM Courses | |
26 | ||
27 | SELECT * FROM Progress | |
28 | ||
29 | INSERT INTO Students VALUES(1,'John Smith','john.smith@example.com','2023-01-15') | |
30 | INSERT INTO Students VALUES(2,'Jane Doe','jane.doe@example.com','2023-02-01') | |
31 | INSERT INTO Students VALUES(3,'Alex Johnson','alex.johnson@example.com','2023-03-10') | |
32 | INSERT INTO Students VALUES(4,'Emily Brown','emily.brown@example.com','2023-03-25') | |
33 | INSERT INTO Students VALUES(5,'Michael Lee','michael.lee@example.com','2023-04-05') | |
34 | ||
35 | INSERT INTO Courses VALUES(101,'Introduction to SQL','Prof. Anderson','2023-02-15','2023-03-30') | |
36 | INSERT INTO Courses VALUES(102,'Web Development','Prof. Johnson','2023-03-01','2023-05-15') | |
37 | INSERT INTO Courses VALUES(103,'Data Science Basics','Prof. Williams','2023-04-10','2023-06-30') | |
38 | INSERT INTO Courses VALUES(104,'Python for Beginners','Prof. Brown','2023-05-01','2023-06-15') | |
39 | INSERT INTO Courses VALUES(105,'Machine Learning','Prof. Thompson','2023-06-15','2023-08-31') | |
40 | ||
41 | INSERT INTO Progress VALUES (1,1,101,8,10), | |
42 | (2,1,102,12,15), | |
43 | (3,2,101,6,10), | |
44 | (4,3,102,10,15), | |
45 | (5,4,103,4,12), | |
46 | (6,2,105,7,20), | |
47 | (7,3,104,6,10), | |
48 | (8,5,102,3,15), | |
49 | (9,1,104,8,10) | |
50 | /* | |
51 | Drop table Students; | |
52 | Drop table Courses; | |
53 | Drop table Progress; | |
54 | */ | |
55 | ||
56 | --Q1 | |
57 | SELECT COUNT(*) 'No. of Students' FROM Students | |
58 | --Q2 | |
59 | SELECT course_name,instructor FROM Courses | |
60 | --Q3 | |
61 | SELECT avg(completed_modules) FROM Progress | |
62 | --Q4 | |
63 | SELECT student_name FROM Students | |
64 | WHERE student_id= | |
65 | (SELECT student_id FROM Progress | |
66 | WHERE completed_modules= | |
67 | (SELECT MAX(completed_modules) FROM Progress) | |
68 | ) | |
69 | --Q5 | |
70 | SELECT course_name FROM Courses | |
71 | WHERE course_id IN | |
72 | (SELECT course_id FROM Progress | |
73 | GROUP BY course_id | |
74 | HAVING COUNT(*)>= | |
75 | ALL(SELECT COUNT(*) FROM progress | |
76 | GROUP BY course_id) | |
77 | ) | |
78 | --Q6 | |
79 | SELECT course_name,Percentage | |
80 | FROM (SELECT course_id,(SUM(completed_modules) *100/SUM(total_modules)) "Percentage" FROM Progress | |
81 | GROUP BY course_id) AS PC, Courses c | |
82 | WHERE c.course_id=PC.course_id | |
83 | ||
84 | --Q7 | |
85 | SELECT student_name FROM Students | |
86 | WHERE student_id IN | |
87 | (SELECT student_id FROM Progress | |
88 | WHERE ((completed_modules*100)/(total_modules)) IN | |
89 | (SELECT MAX((completed_modules*100)/(total_modules)) FROM Progress)) | |
90 | ||
91 | --Q8 | |
92 | SELECT course_name FROM Courses | |
93 | WHERE start_date>GETDATE() | |
94 | ||
95 | --Q9 | |
96 | SELECT student_name FROM Students | |
97 | WHERE student_id IN | |
98 | (SELECT student_id FROM Progress | |
99 | WHERE completed_modules<>total_modules | |
100 | ) | |
101 | ||
102 | --Q10 | |
103 | SELECT instructor, avg_completion_rate FROM | |
104 | (SELECT course_id,avg((completed_modules*100)/(total_modules)) "avg_completion_rate" FROM Progress | |
105 | GROUP BY course_id) AS ACR, Courses c | |
106 | WHERE ACR.course_id=c.course_id | |
107 | ||
108 | --Q11 | |
109 | SELECT student_name,"Courses_enrolled" FROM Students s, | |
110 | (SELECT student_id,COUNT(course_id) "Courses_enrolled" FROM Progress | |
111 | GROUP BY student_id) AS CE | |
112 | WHERE s.student_id=CE.student_id | |
113 | ||
114 | --Q12 | |
115 | SELECT student_name,email FROM Students | |
116 | WHERE student_id IN | |
117 | (SELECT student_id FROM Progress | |
118 | WHERE completed_modules<>total_modules | |
119 | ) | |
120 | ||
121 | --Q13 | |
122 | SELECT avg(DATEDIFF(DAY,start_date,end_date)) "Average Course Duration (in days)" FROM Courses | |
123 | ||
124 | --Q14 | |
125 | SELECT student_name from Students | |
126 | where student_id=( | |
127 | Select student_id from progress | |
128 | where completed_modules=total_modules) | |
129 | ||
130 | --Q15 | |
131 | Select c.course_name, s.student_name from Courses c, Students s, Progress p | |
132 | where c.course_id=p.course_id and s.student_id=p.student_id and p.completed_modules<=p.total_modules | |
133 | order by ((p.completed_modules*100)/(total_modules)) desc | |
134 | ||
135 | --Q16 | |
136 | with sq as (select course_id, avg((completed_modules * 100) / total_modules) "rate" | |
137 | - | Select c.instructor, avg(SumPerc.completion_rate) "max_completion_rate" from Courses c, |
137 | + | from Progress |
138 | - | (Select course_id,(sum(completed_modules*100)/sum(total_modules)) "completion_rate" from Progress |
138 | + | group by course_id |
139 | - | group by course_id) as SumPerc |
139 | + | ) |
140 | - | where c.course_id=SumPerc.course_id and avg(SumPerc.completion_rate)>= All((Select c.instructor, avg(SumPerc.completion_rate) "max_completion_rate" from Courses c, |
140 | + | select Courses.instructor, rate from sq, Courses |
141 | - | (Select course_id,(sum(completed_modules*100)/sum(total_modules)) "completion_rate" from Progress |
141 | + | where rate = (select max(s.rate) from sq s) and (sq.course_id = Courses.course_id) |
142 | - | group by course_id) as SumPerc) |
142 | + | |
143 | - | group by c.instructor) |
143 | + | |
144 | --Q17 | |
145 | (select sum(completed_modules) "Total completed modules" from progress) | |
146 | ||
147 | --Q18 | |
148 | ||
149 | ||
150 | --19 | |
151 | ||
152 | /*select MONTH(s.enrollment_date), count(*) from Courses c, Progress p, Student s | |
153 | where p.student_id = s.student_id and p.course_id = c.course_id | |
154 | group by MONTH(s.enrollment_date)*/ | |
155 |