-- 统计各部门加班员工占比:加班员工数/部门总员工数(保留1位小数百分比)
SELECT 
    st.department,  -- 部门名称
    -- 计算占比并格式化:round保留1位小数,concat拼接百分号 
    CONCAT(ROUND(COUNT(distinct at.staff_id) / COUNT(st.staff_id) * 100, 1), '%') AS ratio 
FROM staff_tb st 
-- LEFT JOIN:保留部门所有员工,仅关联满足加班条件的出勤记录
LEFT JOIN attendent_tb at 
    ON st.staff_id = at.staff_id  -- 按员工ID关联
    -- 加班条件:工作时长(小时)=(下班时间戳-上班时间戳)/3600,需>9.5小时
    AND (UNIX_TIMESTAMP(at.last_clockin) - UNIX_TIMESTAMP(at.first_clockin)) / 3600 > 9.5
-- 按部门分组统计 
GROUP BY st.department  
-- 按加班占比降序排序 
ORDER BY ratio DESC;