with t as ( select department ,round(avg(normal_salary - dock_salary), 2) average_actual_salary from staff_tb stt join salary_tb sat on stt.staff_id = sat.staff_id group by department) , t2 as ( select department ,round(avg(normal_salary - dock_salary), 2) average_actual_salary_male from staff_tb stt join salary_tb sat on stt.staff_id = sat.staff_id where staff_gender = 'male' group by department ) , t3 as ( select department ,round(avg(normal_salary - dock_salary), 2) average_actual_salary_female from staff_tb stt join salary_tb sat on stt.staff_id = sat.staff_id where staff_gender = 'female' group by department ) select t.department department ,average_actual_salary ,if(average_actual_salary_male is null, '0.00', average_actual_salary_male) average_actual_salary_male ,if(average_actual_salary_female is null, '0.00', average_actual_salary_female) average_actual_salary_female from t left join t2 on t.department = t2.department left join t3 on t.department = t3.department order by average_actual_salary desc