Kimuksung
Kimuksung 안녕하세요. 분산처리에 관심이 많은 생각하는 주니어 Data Enginner입니다.

leet code sql 607

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'
    )
)