Advertisement
Regazzi

BAZY LAB1 / Semestr 4

Mar 18th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --------SELECTY----------------------
  2. --------2.2--------
  3. --A--
  4. SELECT id_przed, nazwa FROM przedmiot;
  5. --B--
  6. SELECT nr_albumu, nazwisko FROM student WHERE nr_gr = 2;
  7. --C--
  8. SELECT student.nr_albumu, student.nazwisko, student.nr_gr, grupa.nazwa FROM student, grupa WHERE student.nr_gr = grupa.nr_gr ORDER BY grupa.nazwa;
  9. --D--
  10. SELECT wykladowca.nr_wykl, wykladowca.nazwisko, przedmiot.id_przed, przedmiot.Nazwa FROM wykladowca, przedmiot, pro_zaj WHERE wykladowca.nr_wykl = pro_zaj.nr_wykl AND przedmiot.id_przed=pro_zaj.id_przed;
  11. --E--
  12. SELECT wykladowca.nr_wykl, wykladowca.nazwisko, przedmiot.id_przed, przedmiot.nazwa FROM wykladowca, przedmiot, pro_zaj WHERE wykladowca.nr_wykl = pro_zaj.nr_wykl AND przedmiot.id_przed = pro_zaj.id_przed;
  13. --F--
  14. SELECT grupa.nr_gr, grupa.nazwa, przedmiot.id_przed, przedmiot.nazwa FROM grupa, przedmiot, gr_zaj WHERE grupa.nr_gr = gr_zaj.nr_gr AND przedmiot.id_przed = gr_zaj.id_przed;
  15. --G--
  16. SELECT przedmiot.id_przed, przedmiot.nazwa FROM przedmiot, wykladowca, pro_zaj WHERE przedmiot.id_przed = pro_zaj.id_przed AND wykladowca.nr_wykl = pro_zaj.nr_wykl AND (wykladowca.nr_wykl = 3 OR wykladowca.nr_wykl = 4);
  17. --H--
  18. SELECT przedmiot.id_przed, przedmiot.nazwa, wykladowca.nr_wykl, wykladowca.nazwisko FROM przedmiot, wykladowca, pro_zaj WHERE przedmiot.id_przed = pro_zaj.id_przed AND wykladowca.nr_wykl = pro_zaj.nr_wykl;
  19. --I--
  20. SELECT przedmiot.id_przed, przedmiot.nazwa FROM przedmiot, pro_zaj WHERE przedmiot.id_przed = pro_zaj.id_przed AND przedmiot.id_przed = 10;
  21. --J--Podać na jakie zajęcia prowadzone przez wykadowców nie chodzi żadna grupa
  22. --INSERT INTO GR_ZAJ VALUES(1,2,NULL,406);
  23. SELECT P.ID_PRZED, P.NAZWA FROM GR_ZAJ GZ
  24. LEFT OUTER JOIN PRZEDMIOT P ON P.ID_PRZED = GZ.ID_PRZED
  25. WHERE GZ.NR_GR IS NULL;
  26.  
  27. --K-- Podać na jakie przedmioty nie chodzi żaden student
  28. SELECT ID_PRZED,NAZWA FROM PRZEDMIOT P
  29. WHERE NOT EXISTS(
  30.     SELECT ID_PRZED FROM GR_ZAJ GZ
  31.     WHERE EXISTS(
  32.         SELECT NR_ALBUMU FROM STUDENT S
  33.         WHERE S.NR_GR = GZ.NR_GR
  34.     ) AND GZ.ID_PRZED = P.ID_PRZED
  35. );
  36.  
  37.  
  38. --L--Podać jaki nauczyciel nie uczy żadnego przedmiotu
  39. SELECT wykladowca.nr_wykl, wykladowca.nazwisko FROM wykladowca WHERE NOT EXISTS (SELECT  wykladowca_2.nr_wykl, wykladowca_2.nazwisko FROM wykladowca wykladowca_2, pro_zaj prozaj_2 WHERE wykladowca_2.nr_wykl = prozaj_2.nr_wykl AND wykladowca_2.nr_wykl = wykladowca.nr_wykl);
  40. --M--
  41. SELECT przedmiot.id_przed, grupa.nazwa FROM przedmiot, grupa, gr_zaj WHERE przedmiot.id_przed = gr_zaj.id_przed AND grupa.nr_gr = gr_zaj.nr_gr;
  42. --N--
  43. SELECT przedmiot.id_przed, przedmiot.nazwa FROM przedmiot, gr_zaj WHERE przedmiot.id_przed = gr_zaj.id_przed AND gr_zaj.Sala = '405';
  44. --O--
  45. SELECT DISTINCT student.nr_albumu, student.nazwisko, student.imie FROM student, gr_zaj WHERE student.nr_gr = gr_zaj.nr_gr AND gr_zaj.Sala = '405' ORDER BY student.NR_ALBUMU;
  46. --P-- Podać listę studentów którzy nie maja zajec w sali 405;
  47. SELECT DISTINCT student.nr_albumu, student.nazwisko, student.imie FROM student, gr_zaj WHERE student.nr_gr = gr_zaj.nr_gr AND gr_zaj.Sala != '405' ORDER BY student.NR_ALBUMU;
  48. --Q-- Podac liste studentów którzy chodza na przedmiot o nazwie FIZYKA
  49. SELECT DISTINCT student.nr_albumu, student.nazwisko, student.imie FROM student, gr_zaj, przedmiot WHERE student.nr_gr = gr_zaj.nr_gr AND gr_zaj.id_przed = przedmiot.id_przed AND przedmiot.Nazwa = 'FIZYKA' ORDER BY student.NR_ALBUMU;
  50. --R-- Podac na jakie zajecia chodza studenci o imieniu Astor
  51. SELECT przedmiot.id_przed, przedmiot.nazwa FROM przedmiot, gr_zaj, student WHERE student.nr_gr = gr_zaj.nr_gr AND gr_zaj.id_przed = przedmiot.id_przed AND student.imie LIKE 'Astor';
  52. --S-- Podac nazwiska studentoww których uczy mgr. Bwyk
  53. SELECT DISTINCT student.nr_albumu, student.nazwisko, student.imie FROM student, wykladowca, gr_zaj WHERE student.nr_gr = gr_zaj.nr_gr AND wykladowca.nr_wykl = gr_zaj.nr_wykl AND wykladowca.stopien LIKE 'mgr' AND wykladowca.nazwisko LIKE 'Bwyk' ORDER BY student.NR_ALBUMU;
  54.  
  55. --------2.3--------
  56. --A--Podac ile kazdy wykladowca prowadzi przedmiotow
  57. SELECT wykladowca.nr_wykl, wykladowca.nazwisko, COUNT(pro_zaj.id_przed) AS ILOSC FROM wykladowca, pro_zaj WHERE wykladowca.nr_wykl = pro_zaj.nr_wykl GROUP BY wykladowca.nr_wykl, wykladowca.nazwisko ORDER BY wykladowca.nr_wykl;
  58. --B-- Podac nazwy grup dla ktorych grupa.liczna_st<> zliczona ilosc wierszy
  59. SELECT grupa.nr_gr, grupa.nazwa, grupa.liczba_st, COUNT(student.nr_gr) AS ZLICZONA_ILOSC_WIERSZY FROM grupa, student WHERE grupa.nr_gr = student.nr_gr GROUP BY grupa.nr_gr, grupa.nazwa, grupa.liczba_st HAVING COUNT(student.nr_gr) != grupa.liczba_st;
  60. --C-- Podac z iloma grupami kazdy wykladowca ma zajecia
  61. SELECT wykladowca.nr_wykl, wykladowca.nazwisko, COUNT(gr_zaj.nr_gr) AS ILOSC_GRUP FROM wykladowca, gr_zaj WHERE wykladowca.nr_wykl = gr_zaj.nr_wykl GROUP BY wykladowca.nr_wykl, wykladowca.nazwisko;
  62. --D-- Podac ile kazdy student ma przedmiotow
  63. SELECT student.nr_albumu, student.nazwisko, COUNT(gr_zaj.id_przed) FROM student, gr_zaj WHERE student.nr_gr = gr_zaj.nr_gr GROUP BY student.nr_albumu, student.nazwisko;
  64. --E-- Podac ilu studentow uczeszcza na kazdy przedmiot
  65. SELECT przedmiot.id_przed, przedmiot.nazwa, COUNT(student.nr_albumu) AS LICZBA_STUDENTOW FROM przedmiot, student, gr_zaj WHERE przedmiot.id_przed = gr_zaj.id_przed AND student.nr_gr = gr_zaj.nr_gr GROUP BY przedmiot.id_przed, przedmiot.nazwa;
  66. --F-- Podac liczbe studentow w grupach
  67. SELECT grupa.nr_gr, grupa.nazwa, grupa.liczba_st, COUNT(student.nr_gr) AS ZLICZONA_ILOSC_WIERSZY FROM grupa, student WHERE grupa.nr_gr = student.nr_gr GROUP BY grupa.nr_gr, grupa.nazwa, grupa.liczba_st;
  68. --G-- Podac nazwy grup dla ktorych grupa.liczba_st = zliczona ilosc wierszy
  69. SELECT grupa.nr_gr, grupa.nazwa, grupa.liczba_st, COUNT(student.nr_gr) AS ZLICZONA_ILOSC_WIERSZY FROM grupa, student WHERE grupa.nr_gr = student.nr_gr GROUP BY grupa.nr_gr, grupa.nazwa, grupa.liczba_st HAVING COUNT(student.nr_gr) = grupa.liczba_st;
  70. --H-- Podac srednia ocene kazdego studenta z kazdego przedmiotu
  71. SELECT student.nr_albumu, student.nazwisko, przedmiot.id_przed, przedmiot.nazwa, AVG(zaliczenie.ocena) AS SREDNIA FROM student, przedmiot, zaliczenie WHERE przedmiot.id_przed = zaliczenie.id_przed AND zaliczenie.nr_albumu = student.nr_albumu GROUP BY student.nr_albumu, student.nazwisko, przedmiot.id_przed, przedmiot.nazwa ORDER BY student.nazwisko;
  72. --I-- Podac nazwe przedmiotu, z ktorego najwiecej studentow nie zaliczylo w pierwszym terminie
  73. --SELECT przedmiot.id_przed, przedmiot.nazwa FROM przedmiot WHERE MAX(SELECT przedmiot_2.id_przed, COUNT(student_2.nr_albumu) as liczba FROM student student_2, przedmiot przedmiot_2, zaliczenie zaliczenie_2 WHERE przedmiot_2.id_przed = zaliczenie_2.id_przed AND zaliczenie_2.nr_albumu = student_2.nr_albumu AND zaliczenie_2.termin = 1 AND zaliczenie_2.ocena = 2 group by przedmiot_2.id_przed);
  74. --J-- Podac ostatnia ocene kazdego studenta z kazdego przedmiotu (wedlug terminu)
  75. SELECT student.nr_albumu, student.nazwisko, przedmiot.id_przed, przedmiot.nazwa, zaliczenie.ocena, MAX(zaliczenie.termin) FROM student, przedmiot, zaliczenie WHERE student.nr_albumu = zaliczenie.nr_albumu AND zaliczenie.id_przed = przedmiot.id_przed GROUP BY student.nr_albumu, student.nazwisko, przedmiot.id_przed, przedmiot.nazwa, zaliczenie.ocena;
  76. --K-- Podac w ktorej sali odbywa sie najwiecej zajec
  77. --SELECT gr_zaj.sala, count(gr_zaj.nr_gr) AS ILOSC_ZAJEC FROM gr_zaj GROUP BY gr_zaj.sala;
  78. --L--
  79.  
  80.  
  81.  
  82.  
  83. --M--
  84.  
  85.  
  86.  
  87. --N--
  88.  
  89.  
  90.  
  91.  
  92. --O--
  93. SELECT P.ID_PRZED, P.NAZWA,PODZ.TERMIN, PODZ."LICZBA STUDENTÓW" FROM
  94. (
  95.   SELECT ID_PRZED, TERMIN, COUNT(*) AS "LICZBA STUDENTÓW" FROM ZALICZENIE Z
  96.   WHERE Z.OCENA > 2
  97.   GROUP BY ID_PRZED,TERMIN
  98. ) PODZ
  99. INNER JOIN PRZEDMIOT P ON P.ID_PRZED = PODZ.ID_PRZED;
  100.  
  101.  
  102. --P--
  103. SELECT  p.typ, z.ocena, COUNT(*) AS liczba_studentow
  104. FROM    zaliczenie z, przedmiot p
  105. WHERE   z.id_przed = p.id_przed
  106. GROUP BY p.typ, z.ocena
  107. ORDER BY p.typ, z.ocena;
  108.  
  109.  
  110. --Q--
  111.  
  112.  
  113.  
  114.  
  115. --R--
  116. SELECT TO_CHAR(data, 'day') AS "dzien_tygodnia"
  117. FROM (
  118.         SELECT  z.data, COUNT(*) l
  119.         FROM    zaliczenie z
  120.         GROUP BY z.data
  121.         ORDER BY COUNT(*) DESC
  122.       )
  123. WHERE l = (
  124.         SELECT MAX(l2)
  125.         FROM (
  126.           SELECT  z.data, COUNT(*) l2
  127.           FROM    zaliczenie z
  128.           GROUP BY z.data
  129.         )
  130.       );
  131.  
  132.  
  133.  
  134. --S--
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141. --T--
  142. SELECT  w.nr_wykl, w.nazwisko, COUNT(*) AS liczba_przedmiotow
  143. FROM    pro_zaj pz, wykladowca w
  144. WHERE   w.nr_wykl = pz.nr_wykl
  145. GROUP BY  w.nr_wykl, w.nazwisko
  146. HAVING  COUNT(*) > 2;
  147.  
  148. --U--
  149. SELECT P.ID_PRZED, P.NAZWA,PODZ."LICZBA STUDENTÓW" FROM
  150. (
  151.   SELECT ID_PRZED, SUM(ILOSC) AS "LICZBA STUDENTÓW" FROM (
  152.     SELECT ID_PRZED,PODZ.ILOSC,SALA FROM gr_zaj
  153.     LEFT OUTER JOIN (
  154.       SELECT NR_GR,COUNT(*) AS ILOSC FROM STUDENT
  155.       GROUP BY NR_GR
  156.     )PODZ USING (NR_GR)
  157.   )
  158.   GROUP BY ID_PRZED
  159.   HAVING SUM(ILOSC) > 5
  160. ) PODZ
  161. LEFT OUTER JOIN PRZEDMIOT P ON P.ID_PRZED = PODZ.ID_PRZED;
  162.  
  163.  
  164.  
  165.  
  166. ------------2.4---------
  167.  
  168. ---a---
  169. CREATE OR REPLACE VIEW imiona AS
  170.   SELECT DISTINCT s.imie FROM student s;
  171.  
  172. SELECT * FROM imiona;
  173.  
  174.  
  175. ---b---
  176. CREATE TABLE IMIONA_W AS
  177. SELECT DISTINCT IMIE FROM WYKLADOWCA;
  178.  
  179.  
  180.  
  181.  
  182. ---c---
  183.  
  184. ---d---
  185.  
  186. ---e---
  187. CREATE OR REPLACE VIEW zal_stu_2 AS
  188.   SELECT  z.nr_albumu, s.nazwisko, p.id_przed, p.nazwa, p.typ, z.ocena AS ocena
  189.   FROM    zaliczenie z, student s, przedmiot p
  190.   WHERE   z.nr_albumu = s.nr_albumu
  191.     AND   z.id_przed = p.id_przed
  192.     AND   z.ocena = (
  193.             SELECT  z2.ocena
  194.             FROM    zaliczenie z2
  195.             WHERE   z2.id_przed = z.id_przed
  196.               AND   z2.nr_albumu = z.nr_albumu
  197.               AND   ROWNUM <=1
  198.           );
  199.        
  200.  
  201. SELECT * FROM zal_stu_2;
  202.  
  203.  
  204. ---f---
  205. CREATE OR REPLACE VIEW ZAL_STU_1 AS
  206. SELECT Z.NR_ALBUMU AS "Nr_albumu", S.NAZWISKO, P.ID_PRZED,P.NAZWA,P.TYP,PODZPT.OCENA AS "ocena" FROM ZALICZENIE Z
  207. LEFT OUTER JOIN STUDENT S ON Z.NR_ALBUMU = S.NR_ALBUMU
  208. LEFT OUTER JOIN PRZEDMIOT P ON Z.ID_PRZED = P.ID_PRZED
  209. LEFT OUTER JOIN (
  210.   SELECT NR_ALBUMU, AVG(OCENA) OCENA FROM ZAL_STU_2
  211.   GROUP BY NR_ALBUMU
  212. )PODZPT ON PODZPT.NR_ALBUMU = Z.NR_ALBUMU;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement