mysql:找到条目有多行的列的最大值

标签 mysql sql sum max

抱歉,标题令人困惑。我有一张表,其中有一列每个员工的工作时间。我还有员工 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/

相关文章:

MySQL - 在 VIEW 选择上添加 'group by' 规则

Dokku 上的 MySql 容器卡在 "Restarting..."

mysql - SQL 超出第 1 行 'CGPA' 列的值

C - 二维数组中的移动顺序以获得最大收集总和

arrays - 数组加法,为什么从 'i = 2' 开始?

php - MySQL (MyISAM) 是否会填补多行插入中的表漏洞?

MySQL 忽略连续重复项

mysql - 选择不包括今天的日期范围

mysql - 如何查询匹配的记录集

Java 递归求和