8 do skonczenia
rem
rem $Header: PLdemobld.sql.0,v 00001 91/09/21 11:15:45
rem
set termout on
rem host write sys$output "Konstrukcja relacji demonstracyjnych. Prosze czekac"
host echo "Konstrukcja relacji demonstracyjnych. Prosze czekac"
set feedback on
DROP TABLE PRACOWNICY cascade constraints;
DROP TABLE ZESPOLY cascade constraints;
DROP TABLE ETATY cascade constraints;
CREATE TABLE ZESPOLY
(ID_ZESP NUMBER(4) CONSTRAINT PK_ZESP PRIMARY KEY,
NAZWA VARCHAR2(20),
ADRES VARCHAR2(20) );
CREATE TABLE ETATY
( NAZWA VARCHAR2(10) CONSTRAINT PK_ETAT PRIMARY KEY,
PLACA_MIN NUMBER(6,2),
PLACA_MAX NUMBER(6,2));
CREATE TABLE PRACOWNICY
(ID_PRAC NUMBER(6) CONSTRAINT PK_PRAC PRIMARY KEY,
NAZWISKO VARCHAR2(15),
ETAT VARCHAR2(10) CONSTRAINT FK_ETAT REFERENCES ETATY(NAZWA),
ID_SZEFA NUMBER(6) CONSTRAINT FK_ID_SZEFA REFERENCES PRACOWNICY(ID_PRAC),
ZATRUDNIONY DATE,
PLACA_POD NUMBER(6,2) CONSTRAINT MIN_PLACA_POD CHECK(PLACA_POD>100),
PLACA_DOD NUMBER(6,2),
ID_ZESP NUMBER(4) CONSTRAINT FK_ID_ZESP REFERENCES ZESPOLY(ID_ZESP));
INSERT INTO ZESPOLY VALUES (10,'ADMINISTRACJA', 'PIOTROWO 3A');
INSERT INTO ZESPOLY VALUES (20,'SYSTEMY ROZPROSZONE','PIOTROWO 3A');
INSERT INTO ZESPOLY VALUES (30,'SYSTEMY EKSPERCKIE', 'STRZELECKA 14');
INSERT INTO ZESPOLY VALUES (40,'ALGORYTMY', 'WLODKOWICA 16');
INSERT INTO ZESPOLY VALUES (50,'BADANIA OPERACYJNE', 'MIELZYNSKIEGO 30');
INSERT INTO ETATY VALUES ('PROFESOR' ,800.00,1500.00);
INSERT INTO ETATY VALUES ('ADIUNKT' ,510.00, 750.00);
INSERT INTO ETATY VALUES ('ASYSTENT' ,300.00, 500.00);
INSERT INTO ETATY VALUES ('STAZYSTA' ,150.00, 250.00);
INSERT INTO ETATY VALUES ('SEKRETARKA',270.00, 450.00);
INSERT INTO ETATY VALUES ('DYREKTOR' ,1280.00,2100.00);
INSERT INTO PRACOWNICY VALUES (100,'WEGLARZ' ,'DYREKTOR' ,NULL,to_date('01-01-1968','DD-MM-YYYY'),1730.00,420.50,10);
INSERT INTO PRACOWNICY VALUES (110,'BLAZEWICZ' ,'PROFESOR' ,100 ,to_date('01-05-1973','DD-MM-YYYY'),1350.00,210.00,40);
INSERT INTO PRACOWNICY VALUES (120,'SLOWINSKI' ,'PROFESOR' ,100 ,to_date('01-09-1977','DD-MM-YYYY'),1070.00, NULL,30);
INSERT INTO PRACOWNICY VALUES (130,'BRZEZINSKI' ,'PROFESOR' ,100 ,to_date('01-07-1968','DD-MM-YYYY'), 960.00, NULL,20);
INSERT INTO PRACOWNICY VALUES (140,'MORZY' ,'PROFESOR' ,130 ,to_date('15-09-1975','DD-MM-YYYY'), 830.00,105.00,20);
INSERT INTO PRACOWNICY VALUES (150,'KROLIKOWSKI','ADIUNKT' ,130 ,to_date('01-09-1977','DD-MM-YYYY'), 645.50, NULL,20);
INSERT INTO PRACOWNICY VALUES (160,'KOSZLAJDA' ,'ADIUNKT' ,130 ,to_date('01-03-1985','DD-MM-YYYY'), 590.00, NULL,20);
INSERT INTO PRACOWNICY VALUES (170,'JEZIERSKI' ,'ASYSTENT' ,130 ,to_date('01-10-1992','DD-MM-YYYY'), 439.70, 80.50,20);
INSERT INTO PRACOWNICY VALUES (190,'MATYSIAK' ,'ASYSTENT' ,140 ,to_date('01-09-1993','DD-MM-YYYY'), 371.00, NULL,20);
INSERT INTO PRACOWNICY VALUES (180,'MAREK' ,'SEKRETARKA',100 ,to_date('20-02-1985','DD-MM-YYYY'), 410.20, NULL,10);
INSERT INTO PRACOWNICY VALUES (200,'ZAKRZEWICZ' ,'STAZYSTA' ,140 ,to_date('15-07-1994','DD-MM-YYYY'), 208.00, NULL,30);
INSERT INTO PRACOWNICY VALUES (210,'BIALY' ,'STAZYSTA' ,130 ,to_date('15-10-1993','DD-MM-YYYY'), 250.00,170.60,30);
INSERT INTO PRACOWNICY VALUES (220,'KONOPKA' ,'ASYSTENT' ,110 ,to_date('01-10-1993','DD-MM-YYYY'), 480.00, NULL,20);
INSERT INTO PRACOWNICY VALUES (230,'HAPKE' ,'ASYSTENT' ,120 ,to_date('01-09-1992','DD-MM-YYYY'), 480.00, 90.00,30);
COMMIT;
set termout on
set feedback on
select '' as Zadanie_1 from dual;
insert into PRACOWNICY (ID_PRAC, NAZWISKO, ETAT, ZATRUDNIONY, PLACA_POD, ID_ZESP)
values (250, 'KOWALSKI', 'ASYSTENT', TO_DATE('2015-01-13', 'YYYY-MM-DD'), 1500, 10);
insert into PRACOWNICY (ID_PRAC, NAZWISKO, ETAT, ZATRUDNIONY, PLACA_POD, ID_ZESP)
values (260, 'ADAMSKI', 'ASYSTENT', TO_DATE('2014-09-10', 'YYYY-MM-DD'), 1500, 10);
insert into PRACOWNICY (ID_PRAC, NAZWISKO, ETAT, ZATRUDNIONY, PLACA_POD, PLACA_DOD, ID_ZESP)
values (270, 'NOWAK', 'ADIUNKT', TO_DATE('1990-05-01', 'YYYY-MM-DD'), 2050, 540, 20);
select * from PRACOWNICY WHERE ID_PRAC > 240;
select '' as Zadanie_2 from dual;
update PRACOWNICY
set PLACA_POD = PLACA_POD * 1.10,
PLACA_DOD = CASE
WHEN placa_dod IS NULL THEN 100
ELSE placa_dod * 1.2
END
WHERE ID_PRAC > 240;
select * from PRACOWNICY WHERE ID_PRAC > 240;
select '' as Zadanie_3 from dual;
insert into ZESPOLY (ID_ZESP, NAZWA, ADRES)
values (60, 'BAZY DANYCH', 'PIOTROWO 2');
SELECT * FROM zespoly WHERE nazwa = 'BAZY DANYCH';
select '' as Zadanie_4 from dual;
update PRACOWNICY
set ID_ZESP = (select ID_ZESP from ZESPOLY where NAZWA = 'BAZY DANYCH')
where ID_PRAC in (250, 260, 270);
select * from PRACOWNICY WHERE ID_PRAC > 240;
select '' as Zadanie_5 from dual;
update PRACOWNICY
set ID_SZEFA = (select ID_PRAC from PRACOWNICY where NAZWISKO = 'MORZY')
where ID_ZESP = (select ID_ZESP from ZESPOLY where NAZWA = 'BAZY DANYCH');
select '' as Zadanie_6 from dual;
delete from ZESPOLY where NAZWA = 'BAZY DANYCH';
select '' as Zadanie_7 from dual;
delete from PRACOWNICY where ID_ZESP = (select ID_ZESP from ZESPOLY where NAZWA = 'BAZY DANYCH');
delete from ZESPOLY where NAZWA = 'BAZY DANYCH';
select '' as Zadanie_8 from dual;
select NAZWISKO, PLACA_POD, ROUND(0.10 * AVG(PLACA_POD) OVER (PARTITION BY ID_ZESP), 2) as PODWYZKA
from PRACOWNICY;
select '' as Zadanie_9 from dual;
update PRACOWNICY
set PLACA_POD = PLACA_POD + ROUND(0.10 * (select AVG(PLACA_POD) from PRACOWNICY group by ID_ZESP), 2);
select '' as Zadanie_10 from dual;
select * from PRACOWNICY
where PLACA_POD = (select MIN(PLACA_POD) from PRACOWNICY);
select '' as Zadanie_11 from dual;
update PRACOWNICY
set PLACA_POD = ROUND((select AVG(PLACA_POD) from PRACOWNICY), 2)
where PLACA_POD = (select MIN(PLACA_POD) from PRACOWNICY);
select '' as Zadanie_12 from dual;
update PRACOWNICY
set PLACA_DOD = (select AVG(PLACA_POD) from PRACOWNICY where ID_SZEFA = (select ID_PRAC from PRACOWNICY where NAZWISKO = 'MORZY'))
where ID_ZESP = 20;
select '' as Zadanie_13 from dual;
update PRACOWNICY p
set PLACA_POD = PLACA_POD * 1.25
where ID_ZESP = (select ID_ZESP from ZESPOLY where NAZWA = 'SYSTEMY ROZPROSZONE');
select '' as Zadanie_14 from dual;
delete from PRACOWNICY
where ID_SZEFA = (select ID_PRAC from PRACOWNICY where NAZWISKO = 'MORZY');
select '' as Zadanie_15 from dual;
select * from PRACOWNICY;
select '' as Zadanie_16 from dual;
create sequence PRAC_SEQ start with 300 increment by 10;
select '' as Zadanie_17 from dual;
insert into PRACOWNICY (ID_PRAC, NAZWISKO, ETAT, PLACA_POD)
values (PRAC_SEQ.NEXTVAL, 'Trąbczyński', 'STAZYSTA', 1000);
select '' as Zadanie_18 from dual;
update PRACOWNICY
set PLACA_DOD = PRAC_SEQ.CURRVAL
where NAZWISKO = 'Trąbczyński';
select '' as Zadanie_19 from dual;
delete from PRACOWNICY where NAZWISKO = 'Trąbczyński';
select '' as Zadanie_20 from dual;
create sequence MALA_SEQ start with 1 increment by 1 maxvalue 10;
select '' as Zadanie_21 from dual;
drop sequence MALA_SEQ;