문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
Table: SalesPerson
| Column Name | Type |
|---|---|
| sales_id | int |
| name | varchar |
| salary | int |
| commission_rate | int |
| hire_date | date |
sales_id는 이 테이블의 고유 키이다.
이 테이블의 각 행은 영업사원의 이름과 ID, 급여, 수수료율 및 입사일을 나타낸다.
Table: Company
| Column Name | Type |
|---|---|
| com_id | int |
| name | varchar |
| city | varchar |
com_id는 이 테이블의 고유 키이다.
이 테이블의 각 행은 회사 이름과 회사 ID, 회사가 위치한 도시를 나타낸다.
Table: Orders
| Column Name | Type |
|---|---|
| order_id | int |
| order_date | date |
| com_id | int |
| sales_id | int |
| amount | int |
order_id는 이 테이블의 고유 키이다.
com_id는 Company 테이블의 com_id를 참조하는 외래 키이다.
sales_id는 SalesPerson 테이블의 sales_id를 참조하는 외래 키이다.
이 표의 각 행에는 하나의 주문에 대한 정보가 포함되어 있다. 회사 ID, 영업 담당자 ID, 주문 날짜, 지불 금액이 포함된다.
회사 이름이 "RED"인 회사와 관련된 주문이 없는 모든 영업 사원의 이름을 찾는 솔루션을 작성해라.
결과 테이블은 순서와 상관없이 반환해라.
Input:
SalesPerson table:
| sales_id | name | salary | commission_rate | hire_date |
|---|---|---|---|---|
| 1 | John | 100000 | 6 | 4/1/2006 |
| 2 | Amy | 12000 | 5 | 5/1/2010 |
| 3 | Mark | 65000 | 12 | 12/25/2008 |
| 4 | Pam | 25000 | 25 | 1/1/2005 |
| 5 | Alex | 5000 | 10 | 2/3/2007 |
Company table:
| com_id | name | city |
|---|---|---|
| 1 | RED | Boston |
| 2 | ORANGE | New York |
| 3 | YELLOW | Boston |
| 4 | GREEN | Austin |
Orders table:
| order_id | order_date | com_id | sales_id | amount |
|---|---|---|---|---|
| 1 | 1/1/2014 | 3 | 4 | 10000 |
| 2 | 2/1/2014 | 4 | 5 | 5000 |
| 3 | 3/1/2014 | 1 | 1 | 50000 |
| 4 | 4/1/2014 | 1 | 4 | 25000 |
Output:
| name |
|---|
| Amy |
| Mark |
| Alex |
Explanation:
Orders table에 주문 3과 4에 따르면 영업 사원 John과 Pam만이 RED 회사에 판매 실적이 있다는 것을 쉽게 알 수 있으므로 나머지 모든 영업 사원의 이름은 SalesPerson 테이블에 보고된다.
-- Write your PostgreSQL query statement below
select s.name
from SalesPerson s
where s.name not in
(
select A.name
from SalesPerson A
join Orders B on A.sales_id = B.sales_id
join Company C on B.com_id = C.com_id
where C.name = 'RED'
)