我擁有名稱,工資和員工部門的數據庫。 我需要一個查詢來獲取每個部門中薪水最高的員工。與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