#sql #oracle
Вопрос:
select first_name, department_id, salary
from employees e1
where salary > (select avg(salary)
from employees e2
where e2.department_id=e1.department_id )
Ответ №1:
Да, вы можете:
select first_name, department_id, salary
from employees e1
where exists (select 1
from employees e2
where e2.department_id = e1.department_id
having e1.salary > avg(e2.salary)
);
Однако я нахожу вашу версию со скалярным подзапросом более понятной. И я не думаю, что есть разница в производительности.