inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

서브쿼리 리트코드 문제풀이

해당 문제 JOIN 관련 질문 드립니다.

309

다람

작성한 질문수 4

0

안녕하세요. 먼저 강의를 듣기 전 혼자 풀었을 때

이것이 왜 틀렸는지 궁금해서 요리조리 테이블을 만들어봤습니다. 

그러다보니 LEFT JOIN과 INNER JOIN에 대해서 의문이 생겼는데요. 비주얼라이제이션을 봐도 이해가가지 않아서 질문드립니다. Department.id 도 1,2로 이루어져있고

employee. departmentid도 1,2로 이루어져있으니 공통적인 부분으로 left join 처럼 뽑아질 수 있는 것 아닌가요?  왜 두개만 뽑아지는지 궁금합니다... department 테이블의 데이터가 두개만 있어서 그런건가요?

 

join sql

답변 1

1

송혜정

안녕하세요, 
질문 주신 내용에 두 가지 내용이 들어있어 나눠서 답변 드립니다 :)

1. 첫 번째 쿼리

SELECT 절에서 집계함수를 사용하실 때는 집계함수 앞에 있는 모든 컬럼을 GROUP BY 에 적어주셔야 해당 컬럼들을 기준으로 정확하게 집계가 됩니다. GROUP BY 절에 Employee.name 을 적어주지 않아서, Joe의 salary가 90000 이 아님에도 잘못 출력된 것을 보실 수 있습니다. 아마 Joe 가 가장 처음에 있는 이름이라 출력된 것으로 보이고요.

일단 해당 쿼리에서는 Department.name으로 GROUP BY 가 먼저 되기 때문에 각 부서 salary의 최댓값을 출력합니다. 따라서 해당 쿼리의 결과값으로는 각 부서의 최대 salary 한 개씩, 총 두 행이 출력됩니다.

2. 두 번째 쿼리

해당 쿼리에서는 joinkey로 사용되는 Employee.departmentID와 Department.id 모두 1 또는 2로 동일하게 구성되어 있기 때문에 INNER JOIN, LEFT JOIN 의 결과가 동일합니다. 아마 실행 시 오류가 있었던 것 같은데, 다시 실행해보시면 동일한 값이 출력되는 걸 보실 수 있을 거예요.

 

0

다람

감사합니다!

순위 함수 연습 문제 - 스테디셀러 작가 찾기

0

88

1

문제 내용이 잘못된 것 같습니다.

0

59

2

서브쿼리 질문

0

61

2

[수업질문] 서브쿼리 > null데이터 avg사용 주의

0

72

1

서브쿼리는 언제 작성하는건가요?

0

69

1

안녕하세요 질문드립니다.

0

66

2

Top Earners 문제관련 질문

0

96

2

고급반 cheetsheet

0

149

2

196. Delete Duplicate Emails 좋은 코드 질문

0

142

1

a.id = 1과 b.id=1이 없어도 되는 이유

0

127

0

강의 플랫폼

0

199

3

리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요

0

205

2

ERD 읽는법에 추가 질문 있어요

0

251

1

lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답

0

357

2

사용자정의함수

0

230

1

이 문제 inner join이 이해가 안됩니다.

0

296

1

평균 함수 사용할 때 주의점과 해결법

0

260

1

196. subquery로 풀 때, 궁금한 점

0

384

2

쿼리성능 질문드립니다.

0

315

1

리트코드 highest department salary 문제

0

259

2

The report 문제 order by부분 질문

0

270

2

리트코드 서브쿼리 문제 질문

0

422

1

DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의

0

236

1

서브쿼리의 활용사례 및 조인관련질문

0

287

1