我正在使用Oracle-Apex 我有一张桌子,上面有名字和薪水。我想使用MAX(薪水)来获得薪水最高的名字。
因此查询如下:
SELECT NAME FROM EMPLOYEE
GROUP BY NAME
HAVING MAX(SALARY) = SALARY;
这不起作用,错误ORA-00979:出现不是GROUP BY表达式。所以我用它来阻止该错误:
SELECT NAME FROM EMPLOYEE
GROUP BY NAME, SALARY
HAVING MAX(SALARY) = SALARY;
它把每一行不同的薪水分组,并返回每一行的最高薪水,因为每笔薪水都不相同,所以它返回每一行。
如何在不修改表的情况下将所有内容归为一个大组?我的意思是我要这个工作:
SELECT NAME FROM EMPLOYEE
WHERE MAX(SALARY) = SALARY;
但是有了。真的很简单,但是我找不到路。
答案 0 :(得分:3)
使用子查询
SELECT NAME FROM EMPLOYEE
where salary = (select max( salary) from EMPLOYEE)
答案 1 :(得分:2)
您需要一个WHERE子句,并将薪水与表的最高薪水进行比较:
SELECT NAME FROM EMPLOYEE
WHERE SALARY = (SELECT MAX(SALARY) FROM EMPLOYEE);
答案 2 :(得分:1)
您可以使用以下嵌套查询获取薪水最高的人员的姓名。
select NAME
from EMPLOYEE
where SALARY= ( select max(SALARY)
from EMPLOYEE )