leet code sql 607
문제
- SalesPerson, Company, Orders 3개의 테이블이 존재한다.
- 각각의 테이블은 Orders와 엮여있다.
- RED 회사와는 연관이 없는 salesperson 이름 전체를 조회하라
문제 접근
- 특정 회사의 제외 조건이 존재
- 이 경우에는 group by 를 사용하지 않기에, join을 사용한다.
- subquery와 join의 속도를 비교하여 본다.
- Join이 더 빠른 것을 볼 수 있다.
1
2
3
4
5
6
7
8
9
10
11
select
name
from SalesPerson
where sales_id not in (
select
o.sales_id
from Orders o
join Company c
on o.com_id = c.com_id
where c.name = "RED"
)
1
2
3
4
5
6
7
8
9
10
11
12
13
select
name
from SalesPerson
where sales_id not in (
select
sales_id
from Orders o
where com_id in (
select com_id
from Company
where name = 'RED'
)
)