with t1 as(
    select s1.staff_id,department,staff_gender,(normal_salary-dock_salary) as sa
    from staff_tb s1
    join salary_tb s2 on s1.staff_id=s2.staff_id),
t2 as(
    select department,round(avg(sa),2) as average_actual_salary
    from t1
    group by department),
t3 as(
    select department,round(avg(sa),2) as average_actual_salary_male
    from t1
    where staff_gender='male'
    group by department),
t4 as(
    select department,round(avg(sa),2) as average_actual_salary_female
    from t1
    where staff_gender='female'
    group by department)

select 
    t2.department,
    average_actual_salary,
    coalesce(average_actual_salary_male,0.00) as average_actual_salary_male,
    coalesce(average_actual_salary_female,0.00) as average_actual_salary_female
from t2
left join t3 on t2.department=t3.department
left join t4 on t2.department=t4.department
order by average_actual_salary desc