View difference between Paste ID: fyNHGFhJ and jAA2GM8r
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