select t.department, concat(cast(sum(t.ifoverwork)*100/count(t.department) as decimal(5,1)),'%') as ratio from (select s.department, case when timestampdiff(second,a.first_clockin,a.last_clockin)/3600>9.5 then 1 else 0 end as ifoverwork from staff_tb s left join attendent_tb a on s.staff_id=a.staff_id) t group by t.department order by ratio desc;