select stb.department, avg(actual_salary) as avg_salary from staff_tb as stb left join ( select staff_id, normal_salary - dock_salary as actual_salary from salary_tb where normal_salary - dock_salary between 4000 and 30000 )astb on stb.staff_id = astb.staff_id group by stb.department order by avg_salary desc