Использование MAX () без группировки по - PullRequest
1 голос
/ 22 мая 2019

Я использую 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 ]

3 голосов
/ 22 мая 2019

использовать подзапрос

SELECT NAME FROM EMPLOYEE
where salary = (select max( salary) from EMPLOYEE)
2 голосов
/ 22 мая 2019

Вам нужно предложение WHERE и сравните зарплату с максимальной зарплатой в таблице:

SELECT NAME FROM EMPLOYEE
WHERE SALARY = (SELECT MAX(SALARY) FROM EMPLOYEE);
1 голос
/ 22 мая 2019

Вы можете получить имя человека с максимальной зарплатой, используя следующий вложенный запрос.

select NAME
from   EMPLOYEE
where  SALARY= ( select max(SALARY)
                 from   EMPLOYEE )
...