본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] Leet code - Sales Person

by kime2 2024. 8. 7.
출처

 

문제

RED회사와 거래한적 없는 사원의 이름을 조회하라

문제에 대한 해석

SalesPerson에는 sales_id가 있지만  Orders테이블에는 없는 경우가 있음

이 경우어도 RED와 거래하지 않은 사원임으로 조건에 추가해야 한다 

 

풀이(MYSQL)

-- 정답1.
select s.name
from SalesPerson s
where s.name not in -- red와 거래한 사원의 이름
	(select s.name
    from SalesPerson s 
    	join Orders o on s.sales_id = o.sales_id
    	join Company c on o.com_id = c.com_id
    where c.name = 'Red')
select s.name
from Orders o join Company c -- 1
on o.com_id = c.com_id and c.name = 'Red'
right join SalesPerson s -- 2
on s.sales_id = o.sales_id
where o.sales_id  is null

 

1) Orders와 Company를 com_id를 기준으로 조인하고 회사의 이름이 Red인 경우

> Red와 거래한 사원의 내역

 

2) SalesPerson을 기준으로 (Right)조인하는데

> Red와 거래한 사원 외에 orders데이터가 null이게 된다

 

2-1) orders데이터가 null인 경우만 필터링하여 조회