BSD 8
        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 ID_ZESP = 60;
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_zesp = 60;
select '' as Zadanie_5 from dual;
update PRACOWNICY
set ID_SZEFA = (select ID_PRAC from PRACOWNICY where NAZWISKO = 'MORZY')
where ID_ZESP = 60;
SELECT * FROM PRACOWNICY WHERE ID_SZEFA = (select ID_PRAC from PRACOWNICY where NAZWISKO = 'MORZY') order by id_prac asc;
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 * from pracownicy where id_zesp = 60;
select * from ZESPOLY where id_zesp = 60;
select '' as Zadanie_8 from dual;
SELECT NAZWISKO, PLACA_POD, ROUND(0.1 * (SELECT AVG(PLACA_POD) FROM PRACOWNICY p2 WHERE p2.ID_ZESP = p1.ID_ZESP), 2) AS PODWYZKA FROM PRACOWNICY p1 order by p1.nazwisko asc;
select '' as Zadanie_9 from dual;
UPDATE PRACOWNICY p1
SET PLACA_POD = PLACA_POD + ROUND(0.10 * (SELECT AVG(PLACA_POD) FROM PRACOWNICY p2 WHERE p2.ID_ZESP = p1.ID_ZESP), 2);
select nazwisko, placa_pod from PRACOWNICY order by nazwisko asc;
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 * from PRACOWNICY
where ID_PRAC = 200;
select '' as Zadanie_12 from dual;
SELECT NAZWISKO, PLACA_DOD FROM PRACOWNICY WHERE ID_ZESP = 20 ORDER BY NAZWISKO ASC;
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 NAZWISKO, PLACA_DOD FROM PRACOWNICY WHERE ID_ZESP = 20 ORDER BY NAZWISKO ASC;
select '' as Zadanie_13 from dual;
SELECT NAZWISKO, PLACA_POD FROM PRACOWNICY WHERE ID_ZESP = (select ID_ZESP from ZESPOLY where NAZWA = 'SYSTEMY ROZPROSZONE') ORDER BY NAZWISKO ASC;
update PRACOWNICY p
set PLACA_POD = PLACA_POD * 1.25
where ID_ZESP = (select ID_ZESP from ZESPOLY where NAZWA = 'SYSTEMY ROZPROSZONE');
SELECT NAZWISKO, PLACA_POD FROM PRACOWNICY WHERE ID_ZESP = (select ID_ZESP from ZESPOLY where NAZWA = 'SYSTEMY ROZPROSZONE') ORDER BY NAZWISKO ASC;
select '' as Zadanie_14 from dual;
SELECT 
    p1.NAZWISKO AS PRACOWNIK, 
    p2.NAZWISKO AS SZEF
FROM PRACOWNICY p1
JOIN PRACOWNICY p2 ON p1.ID_SZEFA = p2.ID_PRAC
WHERE p2.NAZWISKO = 'MORZY';
delete from PRACOWNICY
where ID_SZEFA = (select ID_PRAC from PRACOWNICY where NAZWISKO = 'MORZY');
SELECT 
    p1.NAZWISKO AS PRACOWNIK, 
    p2.NAZWISKO AS SZEF
FROM PRACOWNICY p1
JOIN PRACOWNICY p2 ON p1.ID_SZEFA = p2.ID_PRAC
WHERE p2.NAZWISKO = 'MORZY';
select '' as Zadanie_15 from dual;
select * from PRACOWNICY order by nazwisko asc;
rem Sekwencje Zadania
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 * FROM PRACOWNICY WHERE NAZWISKO = 'Trąbczyński';
select '' as Zadanie_18 from dual;
update PRACOWNICY
set PLACA_DOD = PRAC_SEQ.currval
where NAZWISKO = 'Trąbczyński';
SELECT * FROM PRACOWNICY WHERE NAZWISKO = 'Trąbczyński';
select '' as Zadanie_19 from dual;
delete from PRACOWNICY where NAZWISKO = 'Trąbczyński';
SELECT * 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;
DELETE FROM PRACOWNICY WHERE ID_PRAC <= 10;
SELECT * FROM PRACOWNICY;
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
INSERT INTO PRACOWNICY (ID_PRAC, NAZWISKO, PLACA_POD)
VALUES (MALA_SEQ.NEXTVAL, 'Pracownik_', 1000);
select '' as Zadanie_21 from dual;
drop sequence MALA_SEQ;
DROP SEQUENCE PRAC_SEQ;