【发布时间】:2023-03-28 01:28:01
【问题描述】:
我有包含员工姓名、薪水和部门的数据库。 我需要查询以获取每个部门中薪水最高的员工。
数据库:
create table test(
employee_name VARCHAR(255),
department VARCHAR(255),
salary INT
);
数据:
INSERT INTO test(employee_name, department, salary) VALUES
("John", "DepartmentA", 1500),
("Sarah","DepartmentA", 1600),
("Romel","DepartmentA", 1400),
("Victoria","DepartmentB", 1400),
("Maria", "DepartmentB", 1600);
我的尝试:
1.1 WHERE MAX(salary) = 工资按部门分组
SELECT employee_name, salary FROM test WHERE MAX(salary) = salary GROUP BY department;
ERROR 1111 (HY000): Invalid use of group function
1.2。当我用硬编码值替换 MAX(salary) 时,它会按我的预期工作:
SELECT employee_name, salary FROM test WHERE 1600 = salary GROUP BY department;
+---------------+--------+
| employee_name | salary |
+---------------+--------+
| Sarah | 1600 |
| Maria | 1600 |
+---------------+--------+
2 rows in set (0.00 sec)
-
有子句的错误答案(单个结果,不是每个部门):
SELECTemployee_name,salary FROM test GROUP BY Department HAVING MAX(salary)=salary;
+---------------+--------+ |员工姓名 |工资 | +---------------+--------+ |玛丽亚 | 1600 | +---------------+--------+ 一组中的 1 行(0.00 秒)
我期望的结果:
Sarah, DepartmentA
Maria, DepartmentB
【问题讨论】:
标签: mysql sql select group-by aggregate-functions