Zapytanie sql - oracle

Odpowiedz Nowy wątek
2016-08-28 10:02

Rejestracja: 6 lat temu

Ostatnio: 4 lata temu

0

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.

  1. 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 ?
edytowany 2x, ostatnio: bartes19, 2016-08-28 10:07

Pozostało 580 znaków

2016-08-28 10:23

Rejestracja: 4 lata temu

Ostatnio: 2 lata temu

0
  1. (Case when q1.kod_działu_pracownik is null then q1.pracownicy else (select t1.pracownicy from osoby t1 where t1.kod_działu_pracownik=q1.kod_działu_pracownik) end)
  2. Jeżeli dobrze zrozumiałem
    (Select q1.data_zgonu-MIN(q1.data_wynagrodzenia)
edytowany 1x, ostatnio: Szalony, 2016-08-28 10:24

Pozostało 580 znaków

2016-08-28 11:42

Rejestracja: 6 lat temu

Ostatnio: 4 lata temu

0

edit dla podpunkt 2. ... jeśli będzie zawierał null, to wynik zapytania wypisze średnie itd to co jest w pierwszym select-ie biorac pod uwage wszystkich pracownikow ze wszystkich działow a jesli w tym polu bedzie wartość to wypisze pierwszego selecta tylko dla pracownikow z tego działu ?

dla podpunkt 1. jeśli zrobisz MIN(q1.data_wynagrodzenia) to wybierze minimalna wartosc dla wszystkich osob a ma wybrac minimalne wynagrodzenie każdej osoby

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0