SELECT department,concat(format(avg(CASE WHEN duration > 570 THEN 1 ELSE 0 END)*100,1),'%') AS ratio
FROM(
SELECT a.staff_id,a.department,round(timestampdiff(MINUTE,b.first_clockin,last_clockin),1) AS duration
FROM staff_tb AS a
JOIN attendent_tb AS b
ON a.staff_id = b.staff_id
) AS c
GROUP BY department
ORDER BY ratio DESC
此题ez,先将两表连接起来保留id(应该可以不要),部门和时间,然后用GROUP BY 和AVG聚合函数就o而k之了

京公网安备 11010502036488号