Вы также мог бы сделать этот запрос, используя MAX()
в качестве оконной функции (или аналитической функцию, если вы предпочитаете жаргон Oracle):
SELECT numcom, nompr, salaire_fix FROM (
SELECT numcom, nompr, salaire_fix, MAX(salaire_fix) OVER () AS max_salaire_fix
FROM commercialv
) WHERE salaire_fix = max_salaire_fix;
Вы можете также использовать RANK()
:
SELECT numcom, nompr, salaire_fix FROM (
SELECT numcom, nompr, salaire_fix, RANK() OVER (ORDER BY salaire_fix DESC) AS salaire_fix_rank
FROM commercialv
) WHERE salaire_fix_rank = 1;
Или даже ROWNUM
:
SELECT * FROM (
SELECT numcom, nompr, salaire_fix
FROM commercialv
ORDER BY salaire_fix DESC
) WHERE rownum = 1;
Единственное затруднение с последним состоит в том, что он получит только одну строку, даже если есть дополнительные строки с максимальным значением salaire_fix
. Первые два запроса будут иметь более одной строки в этом случае.
Сначала я думаю, что вы пропустили соединение, во-вторых, вы должны получить max как подзапрос – Aramillo