题解 | 统计各岗位员工平均工作时长
统计各岗位员工平均工作时长
https://www.nowcoder.com/practice/b7220791a95a4cd092801069aefa1cae
-- 逻辑拆解:分组依据-按岗位,结果-计算平均时长 -- 难点:这个题目其实不简单,有几个问题需要想明白,难点1:题目要求每个岗位的平均时长,很容联想到岗位总的时长除以岗位人数,这里有问题,如果一个员工打卡多次,按照岗位分组求和时是没有办法知道该取哪条记录的,所以应该是该岗位每个员工的打卡时长求和再除以人数。 -- 难点2:对于AVG函数的使用,题目要求未打卡不计算人次,那么直接avg即可,有的人可能想用COALESCE把null变成空,如果这样那么avg是要计算分母的 SELECT a.post, AVG(a.work_hours) / 60 work_hours FROM( SELECT t1.post, t1.staff_id, SUM(timestampdiff(minute,t2.first_clockin,t2.last_clockin)) work_hours FROM staff_tb t1 INNER JOIN attendent_tb t2 ON t1.staff_id = t2.staff_id GROUP BY t1.post,t1.staff_id ) a GROUP BY a.post ORDER BY work_hours DESC