我拥有名称,工资和员工部门的数据库。 我需要一个查询来获取每个部门中薪水最高的员工。与GROUP BY子句一起使用的MAX函数
数据库:
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(工资)=薪水GROUP BY部门
SELECT employee_name, salary FROM test WHERE MAX(salary) = salary GROUP BY department;
ERROR 1111 (HY000): Invalid use of group function
1.2。当我硬编码值替换MAX(工资),它可以作为我期望:
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)
错误答案与具有条款(而不是每个部门单个结果):
SELECT employee_name,salary FROM test GROUP BY department HAVING MAX(salary)= salary;
+ --------------- + -------- + | employee_name |薪水| + --------------- + -------- + |玛丽亚| 1600 | + --------------- + -------- + 1行中集(0.00秒)
我期望的那样的结果是什么:
Sarah, DepartmentA
Maria, DepartmentB
这是正确的答案r(这是我刚刚发布的,只有格式上的细微差别) – user5151179
只是一个小的事情来纠正:GORUP BY - > GROUP BY – joro