Mam mały problem z napisanie zapytania sql dla oracle.
kod:
select extract (year from q1.data_zgonu) "rok_zgonu",
count(q1.data_zgonu) ile_osob,
round(sum((q1.data_zgonu - q1.data_urodzenia)/count(q1.data_zgonu))/365,0) srednia_wieku,
round(sum(q1.kwota_wynagrodzenia)/count(q1.data_zgonu),2) srednia_kwota,
round(sum((q1.data_zgonu - q1.termin_przyznania)/count(q1.data_zgonu)),1
from (
select rownum,
os.data_zgonu,
os.data_urodzenia,
ob.kwota_wynagrodzenia,
prob.termin_przyznania
from pracownicy pr
left join osoby os on os.osoba_id = pr.osoba_id
left join obliczone ob on ob.osoba_id = pr.osoba_id
left join pracownicy_obliczone prob os on prob.prob_id = ob.prob_id ) g1
group by extract (year from q1.data_zgonu) order by rok_zgonu desc;
po kolei:
1.musze pokazac na ekran pola:
rok zgonu,
ilosc osob ktore umarly w tym roku,
srednia wieku,
srednia kwota wynagrodzenia w dniu zgonu,
okres pobierania wynagrodzenia.
pola te sa obliczane wedlug wzorow w select'ie
i teraz do obliczenia ostatniej kolumny (okres pobierania wynagrodzenia) musze od daty zgonu odjać date pierwszego wynagrodzenia, a nie wiem jak wydobyc to pierwsze wynagrodzenie. Sa one w tabeli obliczone , dla jednego osoba_id jest pewna ilosc wynagrodzen.
- w tabeli pracownicy jest kolumna kod_działu_pracownika i jak zrobić warunek który jeśli będzie zawierał null, to wynik zapytania wypisze wszystkich pracownikow a jesli w tym polu bedzie wartość to wypisze tylko pacownikow z tego działu ?