我是一名学生,正在做一份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));

但我得到了以下错误:
“无效使用组函数错误”。

最佳答案

如果salarysum是唯一的,则可以计算每个dept的sum,然后按聚合薪资降序排列记录,并获取第一条记录(薪资最大的记录):

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

如果多个salary的和可以相同,则可以为每个dept计算薪资和,然后按照上述方法查找最大dept和,并使用salary子句验证每个组的having和是否等于最大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)

09-30 17:06
查看更多