如何计算每位员工每日每工作小时处理订单数?
解决方案
要实现每位员工每日每工作小时处理订单数的计算,需要先统计员工每日订单量,再关联工时表和员工信息表完成计算,以下是对应的SQL语句:
SELECT e.employee_id, e.name, eh.shift_date, -- 计算每小时订单处理数,用NULLIF避免除以0的错误 COUNT(o.order_id) / NULLIF(eh.total_work_in_seconds / 3600, 0) AS order_per_work_hour FROM Employees e JOIN Employee_Hours eh ON e.employee_id = eh.employee_id LEFT JOIN Orders o ON e.employee_id = o.employee_id AND DATE(o.order_date) = eh.shift_date -- 需根据数据库类型调整日期匹配方式,比如SQL Server用CAST(o.order_date AS DATE) GROUP BY e.employee_id, e.name, eh.shift_date, eh.total_work_in_seconds ORDER BY eh.shift_date, e.employee_id;
关键细节说明:
- 用
LEFT JOIN关联Orders表,确保员工当日无订单时也能保留记录(此时order_per_work_hour会返回NULL) NULLIF(eh.total_work_in_seconds / 3600, 0)用于规避工时为0时的除以0报错- 若订单日期字段包含时间部分,需用日期截断函数(如
DATE()、CAST(... AS DATE))与shift_date匹配 - 分组字段必须包含所有非聚合字段,符合SQL分组规则
内容的提问来源于stack exchange,提问作者TheOneBruce
相关产品推荐
相关产品推荐

