Back to posts Edit this post
Copy content

20 Jan 11:28

BSD 5b
INSERT INTO pracownicy(id_prac, nazwisko) VALUES ((SELECT max(id_prac) + 1 FROM pracownicy), 'WOLNY'); select '' as Zadanie_1 from dual; select nazwisko, p.id_zesp, nazwa from PRACOWNICY p left join ZESPOLY z on z.ID_ZESP = p.ID_ZESP order by p.NAZWISKO; select '' as Zadanie_2 from dual; select nazwa, z.id_zesp, case when nazwisko is null then 'brak pracownikow' else NAZWISKO end as pracownik from PRACOWNICY p right join ZESPOLY z on z.ID_ZESP = p.ID_ZESP order by z.nazwa, p.NAZWISKO; select '' as Zadanie_3 from dual; select case when nazwa is null then 'brak zespolu' else nazwa end as zespol, case when nazwisko is null then 'brak pracownikow' else NAZWISKO end as pracownik from PRACOWNICY p full join ZESPOLY z on z.ID_ZESP = p.ID_ZESP order by z.nazwa, p.NAZWISKO; DELETE FROM pracownicy WHERE nazwisko = 'WOLNY'; select '' as Zadanie05b_4 from dual; select nazwa as zespol, count(id_prac) as liczba, sum(placa_pod) as suma_plac from PRACOWNICY p right join ZESPOLY z on z.ID_ZESP = p.ID_ZESP group by nazwa order by nazwa; select '' as Zadanie05b_5 from dual; select nazwa from zespoly z left join pracownicy p on z.ID_ZESP = p.ID_ZESP having count(p.ID_PRAC) = 0 group by nazwa; select '' as Zadanie05b_6 from dual; select p.nazwisko as pracownik, p.id_prac, s.nazwisko as SZEF, s.id_prac as ID_SZEFA from PRACOWNICY p left join PRACOWNICY s on s.id_prac = p.ID_SZEFA order by p.nazwisko; select '' as Zadanie05b_7 from dual; select s.nazwisko as pracownik, count(p.id_prac) as liczba_podwladnych from PRACOWNICY s left join pracownicy p on s.ID_PRAC = p.ID_SZEFA group by s.NAZWISKO order by s.nazwisko; select '' as Zadanie05b_8 from dual; select p.nazwisko, p.etat, p.placa_pod, z.nazwa, s.nazwisko as szef from PRACOWNICY p left join pracownicy s on p.ID_SZEFA = s.ID_PRAC left join zespoly z on p.ID_ZESP = z.ID_ZESP order by p.NAZWISKO; select '' as Zadanie05b_9 from dual; select nazwisko, nazwa from PRACOWNICY p cross join zespoly z order by p.nazwisko asc; select '' as Zadanie05b_10 from dual; select count(*) from PRACOWNICY p cross join zespoly z cross join etaty e order by p.nazwisko asc; select '' as Zadanie05b_11 from dual; select etat from PRACOWNICY where extract(YEAR from ZATRUDNIONY) = '1992' intersect select etat from PRACOWNICY where extract(YEAR from ZATRUDNIONY) = '1993'; select '' as Zadanie05b_12 from dual; SELECT ID_ZESP FROM pracownicy p right join zespoly using(id_zesp) minus select id_zesp from pracownicy; select '' as Zadanie05b_13 from dual; SELECT ID_ZESP, nazwa FROM pracownicy p right join zespoly using(id_zesp) minus select id_zesp, nazwa from pracownicy inner join zespoly using(id_zesp); select '' as Zadanie05b_14 from dual; SELECT NAZWISKO, PLACA_POD, 'Poniżej 480 złotych' AS PROG FROM Pracownicy WHERE PLACA_POD < 480 UNION SELECT NAZWISKO, PLACA_POD, 'Dokładnie 480 złotych' AS PROG FROM Pracownicy WHERE PLACA_POD = 480 UNION SELECT NAZWISKO, PLACA_POD, 'Powyżej 480 złotych' AS PROG FROM Pracownicy WHERE PLACA_POD > 480 ORDER BY PLACA_POD;

No files