Najpier musisz zbudować strukturę, która umożliwi Ci wyświetlić managera i listę jego podwładnych. Możesz ją dodatkowo posortować po numerze managera i zarobkach pracowników:
select e.manager_id, e.employee_id, e.salary
from employees e
start with e.manager_id is null
connect by prior e.employee_id = e.manager_id
order by manager_id asc, salary asc
Wyniki:
100 124 5800
100 123 6500
100 122 7900
100 120 8000
100 121 8200
100 149 10500
100 148 11000
100 114 11000
100 147 12000
100 201 13000
100 146 13500
.....
Uwaga:
1. W tym momencie wyświetlamy bezpośrednich przełożonych. Koniec końców wszyscy podlegają pod użytkownika o id=100. Bądź tego świadom :)
2. Musimy usunąć zbedne sortowanie(dodałem je by łatwiej było analizować wyniki), przy dużej liczbie rekordów może to znacznie spowolnić zapytanie.
Dalej musimy w jakiś sposób powartościować wyniki. Możliwości mamy wiele, moim zdaniem najlepiej skorzystać z funkcji row_number - można też rank/dense_rank wedle uznania.
select e.manager_id, e.employee_id, e.salary, row_number () over (partition by manager_id order by salary asc) lp
from employees e
start with e.manager_id is null
connect by prior e.employee_id = e.manager_id
Wyniki dla id managera = 100
100 124 5800 1
100 123 6500 2
100 122 7900 3
100 120 8000 4
100 121 8200 5
100 149 10500 6
100 148 11000 7
100 114 11000 8
100 147 12000 9
100 201 13000 10
100 146 13500 11
100 145 14000 12
100 102 17000 13
100 101 17000 14
Jak widać pozostała najłatwiejsza część zadania. Robimy podzapytanie i wybieramy rekordy z lp = 1.
select manager_id, salary
from(
select e.manager_id, e.employee_id, e.salary, row_number () over (partition by manager_id order by salary asc) lp
from employees e
start with e.manager_id is null
connect by prior e.employee_id = e.manager_id)
where lp = 1
Wynik:
100 5800
101 4400
102 9000
103 4200
108 6900
114 2500
120 2200
121 2100
122 2200
123 2500
124 2500
145 7000
146 7000
147 6200
148 6100
149 6200
201 6000
205 8300
24000
Myślę, że z wyświetleniem nazwiska zamiast id, odrzuceniem managera z nullem (ostatni rekord) oraz posortowaniem wyników sobie poradzisz.
Jeśli masz problem ze zrozumieniem tego zapytania to zapraszam tutaj: https://www.facebook.com/nieinformatyk/