Рассмотрим таблицу Oracle emp
. Я хотел бы получить сотрудников с высшей зарплатой с department = 20
и job = clerk
. Также предположим, что нет столбца «empno», а первичный ключ содержит несколько столбцов. Вы можете сделать это с помощью:SQL: агрегатная функция и группа по
select * from scott.emp
where deptno = 20 and job = 'CLERK'
and sal = (select max(sal) from scott.emp
where deptno = 20 and job = 'CLERK')
Это работает, но я должен дублировать тест DEPTNO = 20 и задания = 'клерка, который я хотел бы избежать. Есть ли более элегантный способ написать это, возможно, используя group by
? Кстати, если это имеет значение, я использую Oracle.
Нет проблем, я отредактировал ответ :) это должно быть IN – 2008-09-09 03:25:49