select b.department, round(avg(c.normal_salary - c.dock_salary),3) as avg_salary from (select staff_id, round(avg(normal_salary - dock_salary),3) as avg_salary from salary_tb group by 1 having avg(normal_salary - dock_salary) between 4000 and 30000) a inner join staff_tb b on a.staff_id = b.staff_id left join salary_tb c on a.staff_id = c.staff_id group by 1 order by 2 desc