출처
문제
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인 경우만 필터링하여 조회
'문제풀이 > SQL(My sql)' 카테고리의 다른 글
[문제풀이] Leet code - Immediate Food Delivery II (0) | 2024.08.13 |
---|---|
[문제풀이] Leet code - easy (0) | 2024.08.08 |
[문제풀이] Leet code - Delete Duplicate Emails (0) | 2024.08.06 |
[문제풀이] Leet code - Market Analysis I (0) | 2024.08.02 |
[문제풀이] Leet code - Sales Analysis III (0) | 2024.08.01 |