inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

SQL 코딩테스트를 위한 첫 걸음

not in

not In강의 / leetcode 1978 질문 드립니다

해결된 질문

217

이승렬

작성한 질문수 5

2

leetcode 1978번 문제에서 왜 서브 쿼리를 지정해야만 정답이 나올 수 있는지 궁금합니다. 예를 들어,

select employee_id 
from employees 
where salary < 30000  
and manager_id not in(employee_id);

서브쿼리를 지정하지 않고 위와 같이 작성한 경우에는

| employee_id |
| ----------- |
| 1 |
| 11 |

위와 같이 출력 되는데 왜 서브 쿼리를 지정 안 할 경우에는 해당 출력이 나오는지 궁금합니다

sql mysql

답변 1

2

Gemma

승렬님 안녕하세요:)

 

leetcode 문제: https://leetcode.com/problems/employees-whose-manager-left-the-company/description/

먼저, 이해하기 쉽게 Employees 테이블을 전체 조회하면 아래처럼 나옵니다.

image

그 다음에 서브쿼리를 쓰지 않고 바로 not in으로 비교하면, row별 manager_id와 employee_id를 비교하게 됩니다.

image

이건 마치 manager_id와 employee_id가 서로 다른 row를 조회하는 셈이 되는데요.

전체 Employees 테이블 조회했을 때 나왔던 manager_id=null이 여기서 나오지 않은 이유는,
null은 특정 값과 비교자체가 안되기 때문입니다. (숫자 '0'이 '4'와 다르다라고 말할 수는 있어도, '없다'(=null)과 '4'와 같다, 다르다라고 비교 자체가 성립되지 않습니다)

image



하지만 이렇게 서브쿼리를 쓴다면,

이제 더이상 row별로 manager_id와 employee_id가 다른지 비교하는게 아니라, manager_id가 (3, 12, 13, 1, 9, 11)이 아니기만 하면 된다라는 조건으로 바뀝니다. 그리고 이게 실제 문제를 풀려고 우리가 의도했던 로직이 됩니다.

select employee_id
from Employees
where salary < 30000
and manager_id not in 
(
    select employee_id
    from Employees
)
order by employee_id;

image

읽으시고 추가 궁금한 부분 있으시면, 언제든지 질문 주세요:)

vercel실행 - failed to fetch

0

8

1

드랍 테이블로 지운 ordes에 대해서 질문

0

20

1

문제 풀이 1번 질문

0

28

1

twitterdb 연결이 안돼요

1

27

2

Kafka Cluster 구성도 질문

0

23

1

아주 작은 정오표 전달드립니다.

0

52

2

mysql워크벤치를 실행할때마다 오류가 뜹니다. 해결 방법좀 가르켜주세요.

0

44

1

실제로 작은 기업에서 기획 롤

1

26

1

SQL 기본 문법

0

45

2

2강에 파일 어디있을까여,,

0

44

2

문제 링크 변경

0

83

2

SQL 파일 다운로드

0

86

2

workbench 테이블 생성

0

300

2

sql 코딩 테스트에서 index 생성 가능 여부

1

307

2

cross join, full join강의 / leetcode 1280번 문제 질문드립니다

1

314

1

LEETCODE - Sales Analysis 3 코드 질문드립니다.

1

291

1

[The Latest Login in 2020] datetime 계산 관련

1

265

1

[Average Selling Price] 문제 테스트케이스 실패

1

298

3

서브쿼리 질문

1

363

1

EASY INNER JOIN 관련 average-selling-price 연습문제

1

289

1

INNER JOIN 강의 질문

1

342

2

문제 주소 링크

1

310

2

work bench 설치관련 문의

1

290

2

깃헙 데스크탑, MYSQL 워크벤치 연동

2

877

3