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