WITH dep AS(
    SELECT staff_id,department,staff_gender
    FROM staff_tb
)
SELECT 
    b.department,
    round(avg(a.normal_salary-a.dock_salary),2) AS average_actual_salary,
    coalesce(round(avg(IF(b.staff_gender='male',a.normal_salary-a.dock_salary,NULL)),2),0.00) AS average_actual_salary_male,--此处不能先补后填充Null值,不然mean value可能不准确
    coalesce(round(avg(IF(b.staff_gender='female',a.normal_salary-a.dock_salary,NULL)),2),0.00) AS average_actual_salary_female
FROM salary_tb AS a
LEFT JOIN dep AS b
ON a.staff_id=b.staff_id
GROUP BY b.department
ORDER BY round(avg(a.normal_salary-a.dock_salary),2) DESC;