假设我有一个包含以下列的表格:
EmployeeID, PayEntity, HourWorked, Date
我PayEntity can be 1:Normal, 2:OverTime, etc
如何才能获得一段时间内的平均工作时间,例如,如果我们的表格上有这些数据:
1, 1, 40, 7/25/12
1, 2, 5, 7/25/12
2, 1, 30, 7/25/12
该日期的平均值必须为(40+5)+30/2 -- 37.5
尝试使用一个子选择,您可以在其中找到每个员工每天的总小时数,以及一个外部选择,您可以在其中计算每天的平均值:
SELECT Date, AVG(HourWorked) AS HourWorked
FROM
(
SELECT Date, SUM(HourWorked) AS HourWorked
FROM yourtable
GROUP BY EmployeeId, Date
) T1
GROUP BY Date
在线查看它:sqlfiddle
沿着同样的思路,但不知道有一个 AVG 功能
SELECT employee_id, total_hours, days, total_hours/days as average,
FROM (
SELECT employee_id, SUM(hours) as total_hours, COUNT(date) as days FROM `employee_hours_table` GROUP BY `employee_id`
) data