SELECT 
  S.post,
  ROUND(AVG(TIMESTAMPDIFF(minute, A.first_clockin, A.last_clockin)/60), 3) AS work_hours 
FROM staff_tb S
INNER JOIN attendent_tb A
  ON A.staff_id = S.staff_id
WHERE 
  A.first_clockin IS NOT NULL 
  AND A.last_clockin IS NOT NULL 
GROUP BY S.post 
ORDER BY work_hours DESC

先按分钟计算(保留完整精度),再转小时,最后取平均+四舍五入

如果直接按小时算,后面的分钟会忽略 数据不准确