select department,
    round(avg(salary),3) as avg_salary
from (
    select staff_id,normal_salary-dock_salary as salary
    from salary_tb
    where normal_salary-dock_salary between 4000 and 30000
) sal join staff_tb using(staff_id)
group by department
order by avg_salary desc;