select department,round(avg(salary),3) as avg_salary from
(
select st.staff_id,department,salary from staff_tb as st
join
(
select staff_id, normal_salary-dock_salary as salary from salary_tb
where normal_salary-dock_salary between 4000 and 30000
) as sa
on st.staff_id = sa.staff_id
) as t1
group by department
order by avg(salary) desc