Witam,
proszę o pomoc lub radę w napisaniu instrukcji SELECT.
Znajdź liczbę pracowników zarabiających więcej niż wynosi średnia pensja w ich dziale oraz średnią pensję takich pracowników w każdym dziale, w którym minimalna pensja
jest wyższa od minimalnej pensji w dziale nr 20. Ponadto zapytanie ma wyświetlić numer i nazwę działu oraz liczbę pracowników i średnią pensję w każdym dziale, a jego wynik ma być posortowany malejąco według liczby pracowników zarabiających więcej niż wynosi średnia pensja w ich dziale.
Struktura Tabel:
departments
DEPARTMENT_ID : DEPARTMENT_NAME : MANAGER_ID : LOCATION_ID
10 : Administr : 200 : 1700
20 : Buyers : 201 : 1800
... : ... : ... : ...
employees
EMPLOYEE_ID : FIRST_NAME : LAST_NAME : SALARY : DEPARTMENT_ID : DEPARTMENT_NAME
1000 : Mark : Win : 4000 : 20 : Sale
1001 : John : Beck : 3490 : 50 : Marketing
... : ... : ... : ... : ... : ...
Proszę o sugestię, z góry dzięki.
W każdym dziale znajdę pracowników, którzy zarabiają więcej niż wynosi średnia pensja w ich dziale więc dla każdego działu wyświetli mi się co najmniej jedna osoba. Ale jak do tego dodać średnią pensję pracowników w których działach minimalna pensja jest wyższa od tej w dziale 20 ?
Wtedy dla reszty pracowników, którzy nie spełniają warunków wyświetli się w wierszu wartość 0 ?
na razie mam
select department_id, department_name, avg(salary) from employees group by department_id, department_name having min(salary)>(select min(salary) from employees where department_id=20) order by department_id;
Należy wykorzystać CASE ?