使用MAX()而不按

时间:2019-05-22 06:14:51

标签: sql oracle-apex

我正在使用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;

但是有了。真的很简单,但是我找不到路。

3 个答案:

答案 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 )