Есть много решений. Вы также можете сохранить исходный макет запроса, просто добавив псевдонимы таблиц и присоединившись к именам столбцов, в этом случае DEPTNO = 20 и JOB = 'CLERK' останутся в запросе один раз.
SELECT
*
FROM
scott.emp emptbl
WHERE
emptbl.DEPTNO = 20
AND emptbl.JOB = 'CLERK'
AND emptbl.SAL =
(
select
max(salmax.SAL)
from
scott.emp salmax
where
salmax.DEPTNO = emptbl.DEPTNO
AND salmax.JOB = emptbl.JOB
)
Можно также отметить, что ключевое слово «ALL» может использоваться для этих типов запросов, которые позволят вам удалить функцию «MAX».
SELECT
*
FROM
scott.emp emptbl
WHERE
emptbl.DEPTNO = 20
AND emptbl.JOB = 'CLERK'
AND emptbl.SAL >= ALL
(
select
salmax.SAL
from
scott.emp salmax
where
salmax.DEPTNO = emptbl.DEPTNO
AND salmax.JOB = emptbl.JOB
)
Я надеюсь, что это помогает и имеет смысл.