如何选择在项目上工作时间最长的员工

时间:2013-09-30 00:39:54

标签: mysql sql

在下表中,我发现两个项目超出预算但我必须找到每个项目工作时间最长的人员的员工编号:

+------------+-----------+----------------+-------------+
| Department | ProjectID | EmployeeNumber | HoursWorked |
+------------+-----------+----------------+-------------+
| Marketing  |      1000 |              1 |       30.00 |
| Marketing  |      1300 |              1 |       35.00 |
+------------+-----------+----------------+-------------+

两个项目的正确雇员人数应为8,75和80小时。

知道如何检索这些单独项目的MAX小时数吗?

1 个答案:

答案 0 :(得分:2)

简单的方法就是这样:

select * from (
    select ProjectID, EmployeeNumber
    from assignment
    group by 1, 2
    order by sum(HoursWorked) desc
) x
group by 1

请参阅SQLFiddle上的live demo

这是因为mysql对group by的特殊处理,它不允许列出所有非聚合列,在这种情况下只返回每个组遇到的第一行。