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之了