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;