select t1.department,round(avg(t2.salary),3) as avg_salary
from(
select distinct staff_id,department
from staff_tb
)t1
left join(
   select staff_id,normal_salary - dock_salary as  salary
   from salary_tb 
   where normal_salary - dock_salary >=4000  and normal_salary - dock_salary <=30000

)t2 using(staff_id)
group by t1.department 
order by avg_salary desc