题解 | 统计各岗位员工平均工作时长

统计各岗位员工平均工作时长

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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务