select department,
average_actual_salary,
ifnull(average_actual_salary_male,0) as average_actual_salary_male,
ifnull(average_actual_salary_female,0) as average_actual_salary_female
from
    (select department,
    round(avg(normal_salary - dock_salary),2) as average_actual_salary
    from salary_tb
    join staff_tb
    using(staff_id)
    group by department) a
left join
    (select department,
    round(avg(normal_salary - dock_salary),2) as average_actual_salary_male
    from salary_tb
    join staff_tb
    using(staff_id)
    where staff_gender = 'male'
    group by department
    ) b
using(department)
left join
    (select department,
    round(avg(normal_salary - dock_salary),2) as average_actual_salary_female
    from salary_tb
    join staff_tb
    using(staff_id)
    where staff_gender = 'female'
    group by department) c
using(department)
order by average_actual_salary desc