我是一名学生,正在做一份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));
但我得到了以下错误:
“无效使用组函数错误”。
最佳答案
如果salary
sum是唯一的,则可以计算每个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)