mysql - 找到支付最高薪水的部门

标签 mysql sql database max

我是一名学生,正在处理假期交给我们的 MySql 作业。
我有一张看起来像这样的表:

name      dept     salary  
 A       Sales      100
 B       Marketing  200
 C       Sales      800

(抱歉,我是 stackexchange 的新手,所以我不知道如何显示表格。)

查询的问题是:找到支付最高工资的部门
我输入了以下查询:

SELECT dept
     , SUM(salary)
FROM emp
GROUP BY dept
HAVING MAX(SUM(salary));

但是我收到以下错误:

'Invalid use of group function error'.

最佳答案

如果 salary 总和是唯一的,您可以计算每个 dept 的总和,然后按总薪水降序排列记录并获取第一条记录(薪水最高的):

select dept
     , sum(salary) as salary
from tbl
group by dept
order by salary desc
limit 1

如果多个 deptsalary 总和相同,您可以计算每个 dept 的薪水总和,然后找到最大值 salary 以与上述相同的方式求和,并使用 having 子句验证每组的 salary 总和是否等于最大 salary总和:

select dept
from tbl
group by dept 
having sum(salary) = ( select sum(salary) as salary
                       from tbl
                       group by dept
                       order by salary desc
                       limit 1)

关于mysql - 找到支付最高薪水的部门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29982806/

相关文章:

mysql - 如何删除所有重复行,包括 SQL 中的原始行?

sql - Postgresql 从上次更新语句中获取行列表

mysql - 在区分大小写的列中进行不区分大小写的搜索(以及不区分大小写的排序)

sql - WHERE 子句未按预期运行

database - 是否可以在 grails 中动态映射域对象的表名?

MySQL InnoDB 插入性能 (Windows)

php - 迁移后更新 Wordpress 密码导致登录错误

mysql - 在 ms sql 数据库和 my sql 数据库之间创建链接

java - 使用 JPA Hibernate 自动保存子对象

php - 如何使用 GPS 信息搜索数据库?