select department, round(sum(normal_salary - dock_salary) / count(department),2) as average_actual_salary, ifnull(round(sum(if(staff_gender = 'male',normal_salary,Null) - if(staff_gender = 'male',dock_salary,Null)) / count(if(staff_gender = 'male',1,null)),2),0.00) as average_actual_salary_male, ifnull(round(sum(if(staff_gender = 'female',normal_salary,Null) - if(staff_gender = 'female',dock_salary,Null)) / count(if(staff_gender = 'female',1,null)),2),0.00) as average_actual_salary_female from staff_tb as st left join salary_tb as slt on st.staff_id = slt.staff_id group by department order by average_actual_salary desc