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