wszystkich przełożonych i nazwy zespołów, w których pracują,
create or replace view PRZELOZENI
as select nazwisko, nazwa from prac, zesp
where szef in (select id_prac from prac) and prac.id_zesp=zesp.ID_ZESP
create or succeeded.
b) listę etatów (bez duplikatów) na których zatrudnieni są pracownicy uczelni,
CREATE OR REPLACE VIEW LISTA_ETATOW AS SELECT DISTINCT ETAT FROM PRAC
CREATE OR succeeded.
c) wszystkie dane o pracownikach zespołów 30 i 40 w kolejności malejących zarobków,
CREATE OR REPLACE VIEW ZESP3040 AS SELECT * FROM PRAC WHERE ID_ZESP=30 OR ID_ZESP=40 ORDER BY PLACA_POD DESC
d) nazwiska, daty zatrudnienia i etaty asystentów zatrudnionych w 1992 lub 1993 roku,
CREATE OR REPLACE VIEW ETATY_ASYSTENOW AS SELECT NAZWISKO,ZATRUDNIONY,ETAT FROM PRAC WHERE ZATRUDNIONY>to_date('31-12-91','dd-mm-rr') AND ZATRUDNIONY <to_date('01-01-94','dd-mm-rr')
e) nazwiska i płace pracowników powiększone o 15% i zaokrąglone do liczb całkowitych,
CREATE OR REPLACE VIEW PLACA15 AS SELECT NAZWISKO,CEIL(PLACA_POD*1.15)AS "Placa" FROM PRAC
f) wyświetlającą dla każdego szefa jego podwładnych,
CREATE or replace VIEW Szef
AS SELECT p.id_prac id_p, p.nazwisko podwladny, s.id_prac id_s, s.nazwisko szef
FROM prac p , prac s where p.szef=s.id_prac;
g) wyświetlającą jaki mamy dziś dzień tygodnia,
create or replace view dzientygodnia
as select distinct to_char (current_timestamp, 'day') as dzien_tygodnia from prac ;
h)dla każdego pracownika - informację o tym, czy jego pensja jest mniejsza niż, równa lub większa niż 2480 złotych,
create or replace view pensja2480
as select nazwisko, placa_pod,
CASE
WHEN placa_pod < 2480 THEN '< 2480 zł'
WHEN placa_pod = 2480 THEN '= 2480 zł'
WHEN placa_pod > 2480 THEN '> 2480 zł'
END
as pensja
FROM prac;
i) najniższą pensję na uczelni,
create view najnizsza_pensja
as select nazwisko, placa_pod
from prac
where placa_pod=(select min(placa_pod) from prac);
j) najwyższą pensję w każdym zespole,
create or replace view najwyzsza_zespoly
as SELECT id_zesp , max(placa_pod) max_placa
FROM prac GROUP BY id_zesp;
k) informację o kwocie różnicy dzielącej najlepiej i najgorzej zarabiających pracowników,
create or replace view roznica
as SELECT MIN(placa_pod) as minimumm, MAX(placa_pod) as maksimum,
MAX(placa_pod)- MIN(placa_pod) as roznica FROM prac;
l) średnie pensje dla wszystkich etatów,
create or replace view srednia_etat
as SELECT etat, AVG(placa_pod) as średnia FROM prac
GROUP BY etat ORDER BY AVG(placa_pod);
ł) średnie pensje dla wszystkich zespołów,
create or replace view srednia_zespol
as SELECT id_zesp , avg(placa_pod) srednia_placa
FROM prac GROUP BY id_zesp;
m) liczbę profesorów zatrudnionych w każdym z zespołów,
create or replace view profesorowie_zespol
as SELECT id_zesp, COUNT(*) as profesorowie FROM prac
WHERE etat = 'PROFESOR' group by id_zesp;
n) numery zespołów, które zatrudniają więcej niż 3 pracowników.
create or replace view zesp_3
as SELECT id_zesp, COUNT(*) as liczba FROM prac
WHERE id_zesp is not null GROUP BY id_zesp HAVING COUNT(*) > 3;
o) dla każdego szefa - pensję najgorzej zarabiającego jego podwładnego.
create or replace view szef_podwladny_min
as SELECT szef, MIN(placa_pod) as min_pracownika
FROM prac
GROUP BY szef;