select
    distinct
        t1.department,
        t1.average_actual_salary,
        ifnull(t2.average_actual_salary_male,0.00) as average_actual_salary_male,
        ifnull(t2.average_actual_salary_female,0.00) as average_actual_salary_female
from
    (select
        st.department,
        round(avg(at.normal_salary - at.dock_salary),2) as average_actual_salary
    from
        staff_tb st
    left join
        salary_tb at on st.staff_id = at.staff_id
    group by 
        st.department) t1
left join
    (select
        st.department,
        round(avg(if(st.staff_gender = 'male',at.normal_salary - at.dock_salary,null)),2) as average_actual_salary_male,
        round(avg(if(st.staff_gender = 'female',at.normal_salary - at.dock_salary,null)),2) as average_actual_salary_female
    from
        staff_tb st
    left join
        salary_tb at on st.staff_id = at.staff_id
    group by 
        st.department) t2 on t1.department = t2.department
order by 
    t1.average_actual_salary desc