Advertisement
Guest User

feb2019

a guest
Jan 21st, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.88 KB | None | 0 0
  1. CREATE TABLE student_generacije(
  2. id_smera INTEGER,
  3. godina INTEGER,
  4. indeks INTEGER NOT NULL,
  5. prosek DOUBLE,
  6. duzina_studiranja INTEGER,
  7. PRIMARY KEY(indeks));
  8.  
  9. ALTER TABLE student_generacije
  10. ADD CONSTRAINT haha
  11. FOREIGN KEY(indeks)
  12. REFERENCES dosije(indeks);
  13.  
  14. ALTER TABLE student_generacije
  15. ADD CONSTRAINT hah
  16. CHECK(prosek>8.5);
  17.  
  18. INSERT INTO student_generacije
  19. VALUES (123,333,20060020,3,123);
  20.  
  21. DELETE
  22. FROM student_generacije s
  23. WHERE s.indeks = 20060020;
  24.  
  25.  
  26.  
  27.  
  28. INSERT INTO student_generacije(id_smera, godina, indeks)
  29. WITH prosek AS(SELECT i.indeks, s.id_smera, avg(ocena+0.0) AS prosek, st.datum
  30. FROM ispit i JOIN dosije d
  31. ON d.indeks = i.indeks JOIN smer s ON s.id_smera = d.id_smera
  32. JOIN STATUS st ON st.indeks = d.indeks
  33. WHERE st.STATUS = 'diplomirao' AND ocena > 5 AND status_prijave = 'o'
  34. GROUP BY i.indeks,s.id_smera,st.datum
  35. HAVING avg(ocena+0.0)>8.5),
  36. najbolji AS(SELECT p.id_smera, p.indeks, p.prosek, p.datum datum
  37. FROM prosek p  JOIN dosije d ON d.indeks = p.indeks
  38. JOIN smer s ON d.id_smera = s.id_smera
  39. WHERE (p.prosek*(s.semestara/2)*365)/(days(p.datum)-days(d.datum_upisa)) >= ALL(SELECT p1.prosek*s.semestara/2*365/(days(p1.datum)-days(d.datum_upisa))
  40.                                                                                 FROM prosek p1  JOIN dosije d ON d.indeks = p1.indeks
  41.                                                                                 WHERE p.id_smera = p1.id_smera
  42.                                                                                 ))
  43.                                                                                
  44. SELECT ID_SMERA, CASE WHEN MONTH(DATUM) IN (10,11,12) THEN YEAR(DATUM)
  45.                     ELSE YEAR(datum) -1 END, indeks
  46. FROM NAJBOLJI;
  47.  
  48.  
  49. UPDATE student_generacije AS sg
  50. SET prosek = (SELECT avg(ocena+0.0)
  51.                 FROM ispit i
  52.                 WHERE sg.indeks=i.indeks AND ocena > 5 AND status_prijave = 'o'
  53.                 GROUP BY i.indeks);
  54.  
  55. CREATE VIEW prosek AS(SELECT i.indeks, s.id_smera, avg(ocena+0.0) AS prosek, st.datum
  56.                             FROM ispit i JOIN dosije d
  57.                             ON d.indeks = i.indeks JOIN smer s ON s.id_smera = d.id_smera
  58.                             JOIN STATUS st ON st.indeks = d.indeks
  59.                             WHERE st.STATUS = 'diplomirao' AND ocena > 5 AND status_prijave = 'o'
  60.                             GROUP BY i.indeks,s.id_smera,st.datum
  61.                             HAVING avg(ocena+0.0)>8.5);
  62.                            
  63. CREATE VIEW                         najbolji AS(SELECT p.id_smera, p.indeks, p.prosek, p.datum datum
  64.                             FROM prosek p  JOIN dosije d ON d.indeks = p.indeks
  65.                             JOIN smer s ON d.id_smera = s.id_smera
  66.                             WHERE (p.prosek*(s.semestara/2)*365)/(days(p.datum)-days(d.datum_upisa)) >= ALL(SELECT p1.prosek*s.semestara/2*365/(days(p1.datum)-days(d.datum_upisa))
  67.                                                                                 FROM prosek p1  JOIN dosije d ON d.indeks = p1.indeks
  68.                                                                                 WHERE p.id_smera = p1.id_smera
  69.                                                                                 ))  ;  
  70.                                                                                                
  71. UPDATE student_generacije AS sg
  72. SET duzina_studiranja = (                                      
  73.                         SELECT days(n.datum) - days(d.datum_upisa)
  74.                         FROM najbolji n JOIN dosije d ON n.indeks = d.indeks
  75.                         WHERE d.indeks = sg.indeks
  76. );
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85. DROP VIEW najbolji;
  86. DROP VIEW prosek;
  87.  
  88.  
  89.  
  90. SELECT *
  91. FROM student_generacije
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement