Advertisement
CastelShal

DBMS Practical 1 Extended(q15)

Aug 18th, 2023 (edited)
511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.                                     FROM Progress
  138.                                     GROUP BY course_id
  139.                                     )
  140. SELECT Courses.instructor, rate FROM sq, Courses
  141.     WHERE rate = (SELECT MAX(s.rate) FROM sq s) AND (sq.course_id = Courses.course_id)
  142.                            
  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.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement