在下表中,我发现两个项目超出预算但我必须找到每个项目工作时间最长的人员的员工编号:
+------------+-----------+----------------+-------------+
| Department | ProjectID | EmployeeNumber | HoursWorked |
+------------+-----------+----------------+-------------+
| Marketing | 1000 | 1 | 30.00 |
| Marketing | 1300 | 1 | 35.00 |
+------------+-----------+----------------+-------------+
两个项目的正确雇员人数应为8,75和80小时。
知道如何检索这些单独项目的MAX小时数吗?
答案 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的特殊处理,它不允许列出所有非聚合列,在这种情况下只返回每个组遇到的第一行。