inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 중급 SQL

LEFT JOIN 리트코드 문제풀이

16강 LEFT JOIN 리트코드 (183. Customers Who Never Order) 관련 질문

해결된 질문

89

Jason

작성한 질문수 9

0

SELECT c.name as Customers
FROM customers as c
LEFT JOIN orders o ON c.id = o.customerid
where o.id is null

안녕하세요. 리트코드 Average Population of Each Continent 문제 풀다가 질문 생겨서 남깁니다.

 

제가 생각했을때, 아래 코드 (where o.customerid is null) 만 정답이 되어야한다고 생각하는데.

SELECT c.name as Customers
FROM customers as c
LEFT JOIN orders o ON c.id = o.customerid
where o.customerid is null

선미님도 위에 코드와 똑같이 하셨더라구요 ?

왜 위에도 정답이 되는지 잘 모르겠어요.

orders 테이블의 customerid 칼럼이 NULL 값인 것을 찾는 것과

orders 테이블의 id 칼럼이 NULL 인것을 찾는 것. 조금 다르지 않나요??

 

아... 질문 작성하면서 좀 이해한 거 같은데. ㅋㅋ

orders 테이블의 id 칼럼이 NULL 인 것 (즉, id칼럼이 3, 4) 과

orders 테이블의 customerid 칼럼이 NULL인 것 (즉, customerid 칼럼이 2,4)

같나요???

.

.

.

아... 헷갈리네요 ㅠㅠ 질문입니다.

sql 리트코드

답변 2

0

Jason

아 90% 이해했습니다! 감사합니다!

추가 질문 드려도 될까요?

SELECT *
FROM customers AS c
LEFT JOIN orders as o on c.id = o.customerid 
| id | name  | id   | customerId |
| -- | ----- | ---- | ---------- |
| 1  | Joe   | 2    | 1          |
| 2  | Henry | null | null       |
| 3  | Sam   | 1    | 3          |
| 4  | Max   | null | null       |

위에 코드는 선미님께서 강의에서 실행하신 코드 입니다.

그런데, 동일한 코드를 제가 Leetcode에서 실행하면,

맨처음 칼럼 A열에서,

id 가 1,2,3,4 순서인 것을 확인하실 수 있습니다.

 

강의에서 3,1,2,4 로 보이는 것과는 다른 상황입니다.

솔직히 대단히 중요한 건 아닌거같은데.

그냥 여기 꽃혀서 좀 이해가 안되는 것 같습니다.

왜 다른건가요??

0

지식공유자 J

ORDER BY 로 정렬 조건을 명시해 주지 않으면 데이터가 어떤 순서로 보여질 지 보장되지 않습니다. DB 내부적으로 데이터를 효율적으로 처리하기 위해 다양한 방식으로 실행하는데, 이 방식에 따라 결과가 나오는 순서가 매번 달라질 수 있습니다.
그러므로 특정 순서로 정렬된 결과를 얻으려면 ORDER BY 를 꼭 써줘야 합니다.

0

지식공유자 J

FROM customers as c 
  LEFT JOIN orders o ON c.id = o.customerid

위 LEFT JOIN 조건에 따르면 c.id와 일치하는 값이 o.customerid에 없을 경우 orders의 어떤 행도 조인될 수 없기 때문에, 조인 후 테이블 형태에서 orders의 모든 컬럼이 null이 됩니다.

그러므로 o.id IS NULL로 필터링하는 것과 o.customerid IS NULL로 필터링하는 것은 같은 결과를 반환합니다. 둘 중 어떤 조건으로 작성해도 상관 없습니다.

리트코드 1280. Students and Examinations

0

74

3

African Cities 문제관련 질문

0

53

1

SQL 코딩테스트 질문

0

206

1

HACKER RANK에서 문제찾기

0

96

2

강의 자료 다운로드

0

90

2

Asian population 문제가 없어요

0

76

2

INNER JOIN 에서 A.키 쓸때 빨간 색 나오고 'dause'

0

65

2

별칭 관련해서 질문 있습니다.

0

78

2

rising temperature 문제 질문

0

98

2

해커랭크 TOP EARNERS 문제 질문

0

98

1

ON 뒤에 질문

0

94

2

INNER JOIN 질문. 강의와 결과값이 다릅니다.

0

196

3

END, 뒤에 * 붙이면 에러가 뜹니다

1

203

2

CustomerID가 중복되서 나타나요

0

232

3

별칭이 전체 테이블을 못 불러와요.

0

142

2

CASE WHEN 쿼리 오류 문의

1

324

3

CASE문제풀이 질문

0

124

1

Customers Who Never Order 풀다가 Alias관련 질문사항

0

136

1

Average Population 질문

0

129

1

Revising Aggregations - The Count Function 질문

0

103

1

Average Population of Each Continent 에대해서 질문

0

191

3

w3schools 에서 쿼리 작성 질문

0

158

1

INNER JOIN 할 때 NULL 값이 안보일 수도 있나요?

0

328

1

new_category 그룹핑 시 에러 (밑에분과 동일)

1

184

1