Guest User

Untitled

a guest
Jun 23rd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. CREATE VIEW StudentsFollowing AS (
  2. SELECT id, Students.programme, branch
  3. FROM Students LEFT JOIN Belongs_To_Branch ON id = student
  4. );
  5.  
  6. CREATE VIEW FinishedCourses AS (
  7. SELECT id, name, course, grade
  8. FROM Students JOIN (
  9. SELECT student, course, grade
  10. FROM Passed
  11. UNION
  12. SELECT student, course, 'U'
  13. FROM Failed
  14. )
  15. ON (id = student)
  16. );
  17.  
  18. CREATE VIEW Registrations AS (
  19. SELECT student, course, 'registered' as status
  20. FROM Registered_to
  21. UNION
  22. SELECT student, limitedcourse, 'waiting' as status
  23. FROM Queues_to
  24. );
  25.  
  26. CREATE VIEW CourseQueuePositions AS (
  27. SELECT limitedcourse, student, placeinline as place_in_line
  28. FROM Queues_to
  29. );
  30.  
  31. CREATE VIEW PassedCourses AS (
  32. SELECT student, course
  33. FROM Passed
  34. );
  35.  
  36. CREATE VIEW UnreadMandatory AS (
  37. SELECT Students.id, course
  38. FROM Students JOIN Programme_has_mandatory
  39. ON (Students.programme = Programme_has_mandatory.programme)
  40.  
  41. UNION
  42.  
  43. SELECT id, course
  44. FROM (
  45. SELECT id, Students.programme, branch as ilikemonkeys
  46. FROM Students LEFT JOIN (
  47. SELECT student, programme, branch
  48. FROM Belongs_To_Branch
  49. )
  50. ON (id = student)
  51. )
  52. JOIN Branch_has_mandatory
  53.  
  54. ON (Branch_has_mandatory.branch = ilikemonkeys)
  55.  
  56. MINUS
  57.  
  58. SELECT student, course
  59. FROM Passed
  60. );
  61.  
  62. CREATE VIEW PathToGraduation AS
  63.  
  64. WITH PassedCourseCredits AS
  65. (
  66. SELECT student, course, credit
  67. FROM PassedCourses JOIN (
  68. SELECT code, credit
  69. FROM Courses
  70. ) ON (course = code)
  71. ),
  72.  
  73. StudentTotalCredits AS
  74. (
  75. SELECT student, NVL(SUM(credit), 0) as total_credits
  76. FROM PassedCourseCredits
  77. GROUP BY student
  78. ),
  79.  
  80. LeftMandatory AS
  81. (
  82. SELECT id as student, NVL(COUNT(course), 0) as left_mandatory
  83. FROM UnreadMandatory
  84. GROUP BY id
  85. ),
  86.  
  87. BranchRecommendedCredits AS
  88. (
  89. SELECT student, course as course2, credit
  90. FROM PassedCourseCredits NATURAL JOIN (
  91. Branch_recommends
  92. )
  93. ),
  94.  
  95. StudentBranchCredits AS
  96. (
  97. SELECT student, NVL(SUM(credit), 0) as branch_credit
  98. FROM BranchRecommendedCredits
  99. GROUP BY student
  100. ),
  101.  
  102. CoursesWithTypes AS
  103. (
  104. SELECT code, credit, coursetype
  105. FROM Courses JOIN (
  106. Has_type )
  107. ON (course = code)
  108. ),
  109.  
  110. PassedCoursesWithTypes AS
  111. (
  112. SELECT student, code, credit, coursetype
  113. FROM Passed LEFT JOIN CoursesWithTypes
  114. ON (course = code)
  115. ),
  116.  
  117. MathCourseCredits AS
  118. (
  119. SELECT student, NVL(SUM(credit), 0) as math_credit
  120. FROM PassedCoursesWithTypes
  121. WHERE (coursetype = 'Mathematical')
  122. GROUP BY student
  123. ),
  124.  
  125. ResearchCourseCredits AS
  126. (
  127. SELECT student, NVL(SUM(credit), 0) as research_credit
  128. FROM PassedCoursesWithTypes
  129. WHERE (coursetype = 'Research')
  130. GROUP BY student
  131. ),
  132.  
  133. SeminarCoursesRead AS
  134. (
  135. SELECT student, NVL(COUNT(code), 0) as seminar_count
  136. FROM PassedCoursesWithTypes
  137. WHERE (coursetype = 'Seminar')
  138. GROUP BY student
  139. ),
  140.  
  141. PreSummary AS
  142. (
  143. SELECT *
  144. FROM
  145. StudentTotalCredits
  146. NATURAL FULL OUTER JOIN
  147. LeftMandatory
  148. NATURAL FULL OUTER JOIN
  149. StudentBranchCredits
  150. NATURAL FULL OUTER JOIN
  151. MathCourseCredits
  152. NATURAL FULL OUTER JOIN
  153. ResearchCourseCredits
  154. NATURAL FULL OUTER JOIN
  155. SeminarCoursesRead
  156. ),
  157.  
  158. Qualified AS
  159. (
  160. SELECT student,
  161. CASE
  162. WHEN seminar_count >= 1
  163. AND research_credit >= 10
  164. AND math_credit >= 20
  165. AND branch_credit >= 10
  166.  
  167. THEN 'Qualified'
  168. ELSE 'Not Qualified'
  169. END as qualified
  170. FROM PreSummary
  171. )
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178. SELECT *
  179. FROM
  180. StudentTotalCredits
  181. NATURAL FULL OUTER JOIN
  182. LeftMandatory
  183. NATURAL FULL OUTER JOIN
  184. StudentBranchCredits
  185. NATURAL FULL OUTER JOIN
  186. MathCourseCredits
  187. NATURAL FULL OUTER JOIN
  188. ResearchCourseCredits
  189. NATURAL FULL OUTER JOIN
  190. SeminarCoursesRead
  191. NATURAL FULL OUTER JOIN
  192. Qualified
Add Comment
Please, Sign In to add comment