1. Do bazy danych zawierającej tabele: EMP, DEPT i SALGRADE dodaj dodatkową tabelę o nazwie STATYSTYKA_PLATNOSCI_Sxxxx przeznaczoną do rejestracji informacji dotyczących grup zaszegregowania GRADE. Tabela powinna zawierac numer grupy, LOSAL, HISAL, liczbę osób należącą do grupy w momencie wpisywania określoną w kolumnie "data ostaniej modyfikacji", maksymalną i minimalnę pensje podstawową rzeczywiście osiągalną rzeczywiście osiąganą przez pracowników tej grupy na przestrzeni całej historii oraz datę ostaniej modyfikacji tych informacji (sysdate) 2. Utwórz procedurę która wypełni tabelę STATYSTYKA_PLATNOSCI_Sxxxx początkowymi danymi z tebel EMP, DEPT i SALGRADE dodatkowo wypisując komunikaty o każdym wystawianym do tabeli wierszu. 3. Napisz wyzwalacz poprawiający tabelę STATYSTYKA_PLATNOSCI_Sxxxx gdy w tabel EMP nastąpią zmiany mające wpływ na statystyke płatności (zakładamy, że tabela SALGRADE się nie zmienia) ROZWIĄZANIE: //zadanie1 CREATE TABLE STATYSTYKA_STANOWISK_Sxxxx( STANOWISKO VARCHAR2(25) null, PENSJA NUMBER(10,0) not null, DATA date null, constraint STATYSTYKA_STANOWISK_Sxxxx_PK primary key (STANOWISKO) ); //zadanie 2 SET SERVEROUTPUT ON create or replace procedure WYPELNIJ_STANOWISKA as cursor PRACOWNICY is SELECT SUM(SAL) sal,JOB FROM EMP GROUP BY JOB; PRACOWNIK PRACOWNICY%rowtype; begin open PRACOWNICY; LOOP FETCH PRACOWNICY INTO PRACOWNIK; EXIT WHEN PRACOWNICY%NOTFOUND; INSERT INTO STATYSTYKA_STANOWISK_Sxxxx (stanowisko,pensja,data) VALUES (pracownik.job, pracownik.sal,sysdate); dbms_output.put_line('Dodane stanowisko: '||pracownik.job||' wynagrodzenie: '||pracownik.sal||' data '||sysdate); END LOOP; end; Dodane stanowisko: CLERK wynagrodzenie: 6150 data 12/01/20 Dodane stanowisko: SALESMAN wynagrodzenie: 13600 data 12/01/20 Dodane stanowisko: PRESIDENT wynagrodzenie: 5000 data 12/01/20 Dodane stanowisko: MANAGER wynagrodzenie: 10275 data 12/01/20 Dodane stanowisko: ANALYST wynagrodzenie: 6000 data 12/01/20 PL/SQL procedure successfully completed. //zadanie 3 CREATE OR REPLACE TRIGGER SPRAWDZ_STATYSTYKE BEFORE UPDATE OF SAL ON EMP FOR EACH ROW BEGIN UPDATE STATYSTYKA_STANOWISK_Sxxxx SET PENSJA=PENSJA+(:NEW.SAL-:OLD.SAL) WHERE stanowisko=:NEW.JOB; end; SELECT ENAME,JOB,SAL FROM EMP WHERE EMPNO=7369; SELECT * FROM STATYSTYKA_STANOWISK_Sxxxx WHERE STANOWISKO='CLERK'; UPDATE EMP SET SAL=900 WHERE EMPNO=7369; SELECT ENAME,JOB,SAL FROM EMP WHERE EMPNO=7369; SELECT * FROM STATYSTYKA_STANOWISK_Sxxxx WHERE STANOWISKO='CLERK'; ENAME JOB SAL SMITH CLERK 800 STANOWISKO PENSJA DATA CLERK 6150 12/01/20 1 row updated. ENAME JOB SAL SMITH CLERK 900 STANOWISKO PENSJA DATA CLERK 6250 12/01/20