抱歉,标题令人困惑。我有一张表,其中有一列每个员工的工作时间。我还有员工 ssn 列和他们正在从事的项目的项目 id 列。我想找到工作最多的项目,但是,我不能使用简单的最大值,因为每个项目都有多行,具体取决于哪个员工在该项目上工作了多少小时。
EmployeeSSN ProjectNum Hours
1 1 20
2 4 30
3 1 15
在此示例中,我希望返回项目 1。下面是我到目前为止的代码
select project.pname, works_on.pno, sum(works_on.hours)
from works_on
join project
on works_on.pno = project.pnumber
group by works_on.pno
limit 1
这很接近,它返回特定项目的总工作时间(在本例中,由于限制 1,它显示项目 1)。如果有一种方法可以将 sum(works_on.hours) 包装在 max() 中,我认为就可以了。但是,这给了我一个错误,所以我没有正确执行。
最佳答案
尝试返回 1 行包含最长小时数的内容:
select project.pname, works_on.pno, sum(works_on.hours) AS hours
from works_on
join project
on works_on.pno = project.pnumber
group by works_on.pno
order by hours desc
limit 1
我在我们的 CRM 上快速尝试了一下,它似乎返回了预期的效果。
关于mysql:找到条目有多行的列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26744297/