Advertisement
Guest User

Student Status

a guest
Aug 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- (a)
  2. CREATE TABLE DEPT
  3. (
  4.     DEPT_ID NUMBER PRIMARY KEY,
  5.     DEPT_NAME VARCHAR2(20)
  6. );
  7.  
  8. CREATE TABLE PROG
  9. (
  10.     PROG_ID NUMBER PRIMARY KEY,
  11.     PROG_NAME VARCHAR2(20),
  12.     DEPT_ID NUMBER,
  13.     FOREIGN KEY(DEPT_ID) REFERENCES DEPT
  14. );
  15.  
  16. CREATE TABLE COURSES
  17. (
  18.     COURSE_ID NUMBER PRIMARY KEY,
  19.     COURSE_NAME VARCHAR2(20),
  20.     CREDIT NUMBER
  21. );
  22.  
  23. CREATE TABLE STUDENTS
  24. (
  25.     S_ID NUMBER,
  26.     S_NAME NUMBER,
  27.     DEPT_ID NUMBER,
  28.     PROG_ID NUMBER,
  29.     S_DOB DATE,
  30.     S_AY NUMBER,
  31.     S_SEMESTER NUMBER,
  32.     S_GPA NUMBER,
  33.     FOREIGN KEY(DEPT_ID) REFERENCES DEPT,
  34.     FOREIGN KEY(PROG_ID) REFERENCES PROG,
  35.     CHECK (S_GPA BETWEEN 0 AND 4)
  36. );
  37.  
  38. CREATE TABLE RESULTS
  39. (
  40.     S_ID NUMBER,
  41.     COURSE_ID NUMBER,
  42.     AY NUMBER,
  43.     SEM NUMBER,
  44.     LETTER_GRADE VARCHAR2(5)
  45. );
  46.  
  47. CREATE TABLE GRADES_EXPLAINED
  48. (
  49.     LETTER VARCHAR2(5) PRIMARY KEY,
  50.     NUM_VALUE NUMBER,
  51.     CHECK (NUM_VALUE BETWEEN 0 AND 4)
  52. );
  53.  
  54. -- (b)
  55. -- i)
  56. SELECT DEPT_NAME, PROG_NAME, COURSE_NAME, LETTER_GRADE
  57. FROM STUDENTS, DEPT, PROG, COURSES, RESULTS
  58. WHERE STUDENTS.DEPT_ID = DEPT.DEPT_ID AND
  59. STUDENTS.PROG_ID = PROG.PROG_ID AND
  60. STUDENTS.S_ID = RESULTS.S_ID AND
  61. RESULTS.COURSE_ID =  COURSES.COURSE_ID AND
  62. STUDENTS.S_ID = '170042075';
  63.  
  64. -- ii)
  65. SELECT S_ID, S_NAME
  66. FROM STUDENTS
  67. WHERE S_GPA > (SELECT MIN(AVERAGE)
  68. FROM (SELECT AVG(S_GPA) AS AVERAGE
  69. FROM STUDENTS
  70. GROUP BY DEPT_ID));
  71.  
  72. -- (c)
  73. CREATE OR REPLACE FUNCTION
  74. FIND_STATUS(STUDENT_ID NUMBER)
  75. RETURN VARCHAR2
  76. AS
  77. STATUS VARCHAR2(20);
  78. CURR_AY NUMBER;
  79. CURR_SEM NUMBER;
  80. FAIL_COUNT NUMBER;
  81. BEGIN
  82.     SELECT MAX(S_AY), MAX(S_SEMESTER) INTO CURR_AY, CURR_SEM
  83.     FROM STUDENTS
  84.     WHERE S_ID = STUDENT_ID;
  85.     SELECT COUNT(*) INTO FAIL_COUNT
  86.     FROM RESULTS
  87.     WHERE AY = CURR_AY AND
  88.     SEM = CURR_SEM AND
  89.     S_ID = STUDENT_ID AND
  90.     LETTER_GRADE = 'F';
  91.     IF FAIL_COUNT > 2 THEN
  92.         STATUS := 'FAILED';
  93.     ELSIF FAIL_COUNT > 0 THEN
  94.         STATUS := 'REFERRED';
  95.     ELSE
  96.         STATUS := 'PASSED';
  97.     END IF;
  98.     RETURN STATUS;
  99. END;
  100. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement