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','[email protected]','2023-01-15') | |
| 30 | INSERT INTO Students VALUES(2,'Jane Doe','[email protected]','2023-02-01') | |
| 31 | INSERT INTO Students VALUES(3,'Alex Johnson','[email protected]','2023-03-10') | |
| 32 | INSERT INTO Students VALUES(4,'Emily Brown','[email protected]','2023-03-25') | |
| 33 | INSERT INTO Students VALUES(5,'Michael Lee','[email protected]','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 |