SELECT st.department ,ROUND(AVG(sa.normal_salary-sa.dock_salary),3) AS avg_salary FROM staff_tb AS st JOIN salary_tb AS sa ON st.staff_id=sa.staff_id WHERE sa.normal_salary-sa.dock_salary >=4000 AND sa.normal_salary-sa.dock_salary <= 30000 GROUP BY st.department ORDER BY avg_salary DESC