Advertisement
Guest User

Untitled

a guest
Feb 8th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.74 KB | None | 0 0
  1. DROP TABLE opiekun_zwierzecia;
  2. DROP TABLE opiekunowie;
  3. DROP TABLE zwierzeta;
  4. DROP TABLE klatki;
  5. DROP TABLE gatunki;
  6. CREATE TABLE gatunki
  7. (
  8.     id NUMBER(6) PRIMARY KEY,
  9.     nazwa VARCHAR2(20)
  10. );
  11. INSERT INTO gatunki VALUES(1, 'Ptaki');
  12. INSERT INTO gatunki VALUES(2, 'Ssaki');
  13. INSERT INTO gatunki VALUES(3, 'Ryby');
  14. CREATE TABLE klatki
  15. (
  16.     id NUMBER(6) PRIMARY KEY,
  17.     nazwa VARCHAR2(20),
  18.     powierzchnia NUMBER(3)
  19. );
  20. INSERT INTO klatki VALUES(1, 'Nowa1', 20);
  21. INSERT INTO klatki VALUES(2, 'Nowa2', 30);
  22. INSERT INTO klatki VALUES(3, 'Nowa3', 40);
  23. CREATE TABLE zwierzeta
  24. (
  25.     id NUMBER(6) PRIMARY KEY,
  26.     nazwa VARCHAR2(20),
  27.     data_urodzenia DATE,
  28.     waga NUMBER(5), -- POWINNO być w nawiasie 3 ale jest to błąd wykładowcy poniewaz wtedy nie można wykonać zadania 4!
  29.     stan VARCHAR2(20),
  30.     id_gatunek NUMBER(6) REFERENCES gatunki(id),
  31.     id_klatki NUMBER(6) REFERENCES klatki(id)
  32. );
  33. INSERT INTO zwierzeta VALUES(1, 'Krowa', TO_DATE('2017/09/02', 'yyyy/mm/dd'), 30, 'Zdrowa', 2, 1);
  34. INSERT INTO zwierzeta VALUES(2, 'Szczupak', TO_DATE('2017/03/02', 'yyyy/mm/dd'), 1300, 'Zdrowa', 3, 2);
  35. INSERT INTO zwierzeta VALUES(3, 'Andrzej', TO_DATE('2017/02/03', 'yyyy/mm/dd'), 1, 'Zdrowa', 1, 3);
  36. INSERT INTO zwierzeta VALUES(4, 'Krowa', TO_DATE('2017/09/02', 'yyyy/mm/dd'), 3000, 'Zdrowa', 2, 1);
  37. INSERT INTO zwierzeta VALUES(5, 'Krowa', TO_DATE('2017/09/02', 'yyyy/mm/dd'), 30, 'Zdrowa', 2, 1);
  38. INSERT INTO zwierzeta VALUES(6, 'Krowa', TO_DATE('2017/09/02', 'yyyy/mm/dd'), 30, 'Zdrowa', 2, 1);
  39. CREATE TABLE opiekunowie
  40. (
  41.     id NUMBER(6) PRIMARY KEY,
  42.     imie VARCHAR2(20),
  43.     nazwisko VARCHAR2(20),
  44.     pensja NUMBER(6)
  45. );
  46. INSERT INTO opiekunowie VALUES(1, 'Darek', 'Babiarz', 2000);
  47. INSERT INTO opiekunowie VALUES(2, 'Darek2', 'Babiarz2', 1000);
  48. INSERT INTO opiekunowie VALUES(3, 'Darek3', 'Babiarz3', 3000);
  49. CREATE TABLE opiekun_zwierzecia
  50. (
  51.     id NUMBER(6) PRIMARY KEY,
  52.     id_zwierze NUMBER(6) REFERENCES zwierzeta(id),
  53.     id_opiekun NUMBER(6) REFERENCES opiekunowie(id),
  54.     poczatek_opieki DATE
  55. );
  56. INSERT INTO opiekun_zwierzecia VALUES(1, 1, 1, TO_DATE('2017/02/03', 'yyyy/mm/dd'));
  57. INSERT INTO opiekun_zwierzecia VALUES(2, 2, 2, TO_DATE('2013/02/03', 'yyyy/mm/dd'));
  58. --Zadanie 1
  59. /*
  60. Instrukcje wyswietlajaca imie, nazwisko i date urodzenia najstarszego zwierzecia
  61. */
  62. SELECT * FROM (SELECT nazwa, data_urodzenia FROM zwierzeta ORDER BY data_urodzenia) WHERE ROWNUM = 1;
  63.  
  64.  
  65.  
  66. /*
  67. Wyswietlanie nastepujacych informacji o opiekunach zwierzat (nazwa zwierzecia,
  68. nazwa gatunku, imie i nazwisko opiekuna data urodzenia dla zwierzat
  69. majcych co najmniej 3 miesiace
  70. */
  71.  
  72. SELECT zwierzeta.nazwa, gatunki.nazwa, opiekunowie.imie, opiekunowie.nazwisko, zwierzeta.data_urodzenia
  73. FROM zwierzeta, gatunki, opiekunowie, opiekun_zwierzecia
  74. WHERE zwierzeta.id_gatunek = gatunki.id AND opiekun_zwierzecia.id_zwierze = zwierzeta.id AND opiekunowie.id = opiekun_zwierzecia.id_opiekun
  75. AND ADD_MONTHS(SYSDATE, -3)>= zwierzeta.data_urodzenia;
  76.  
  77. /*
  78. instrukcje ktora wyswietli informacje o klatce nazwa powierzchnia
  79. oraz liczbie zwierzat ktore sie w niej znajduja
  80. jesli liczba ta jest wieksza od 3
  81. */
  82.  
  83. SELECT klatki.nazwa, klatki.powierzchnia, COUNT(zwierzeta.id) AS ilosc
  84. FROM klatki, zwierzeta
  85. WHERE zwierzeta.id_klatki = klatki.id
  86. GROUP BY klatki.nazwa, klatki.powierzchnia
  87. HAVING COUNT(zwierzeta.id)>3;
  88. /*
  89. funkcje wyliczajaca ile procent stanowia ziwerzeta ktore waza powyzej 1
  90. tony w stosunku do wszystkich zwierzat
  91. */
  92. CREATE OR REPLACE FUNCTION tony
  93. RETURN NUMBER IS
  94. ile_wszystkich  NUMBER;
  95. ile_pustych NUMBER;
  96. BEGIN
  97.     ile_wszystkich := 0;
  98.     ile_pustych :=0;
  99.     SELECT COUNT(zwierzeta.id) INTO ile_wszystkich FROM zwierzeta;
  100.     SELECT COUNT(zwierzeta.id) INTO ile_pustych FROM zwierzeta WHERE zwierzeta.waga > 1000;
  101.     RETURN ile_pustych/ile_wszystkich*100;
  102. END;
  103. /
  104. SELECT tony FROM dual;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement