inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Set 3 문제 목록

선생님 코드 중에 궁금한 것이 있습니다.

174

MIN

작성한 질문수 10

2

문제 풀이중  HackerRank의 New Companies 문제에 대한 질문입니다 선생님 께서 작성하신 코드를 보고 혹시 left join의 on 자리에 모든 테이블에 공통되는 칼럼인 company_code로 바꿔도 같은 결과가 나오지 않을까라는 생각에 해봤더니 같은 값이 나오는 것 같았어요 

 

<선생님의 코드>  (저랑 다른부분만)

 

left join lead_manager lm on c.company_code = lm.company_code

left join senior_manager sm on lm.lead_manager_code = sm.lead_manager_code

left join manager m on sm.senior_manager_code = m.senior_manager_code

left join employee e on m.manager_code = e.manager_code

group by c.company_code,c.founder

order by c.company_code;

 

<저의 코드>

from company c 

     left join lead_manager lm on c.company_code = lm.company_code

     left join senior_manager sm on lm.company_code = sm.company_code

     left join manager m on sm.company_code = m.company_code

 

     left join employee e on m.company_code= e.company_code

 

 

궁금한점 

굳이 on에 들어갈 공통 칼럼을 다르게 해주신 이유가 있나요? 이번에 운이 좋아서 값이 나온거지  저 처럼 저렇게 1개로 다 넣으면(모든 테이블에 공통으로 존재하는 칼럼이 1개 있을 경우) 원래 안되는건가요? 

sql

답변 1

1

지식공유자 J

구하려는 값이 무엇이냐에 따라 조인의 기준이 되는 컬럼도 달라질 수 있습니다.

이 문제는 각 직급마다 유니크한 값 개수를 구하는 것이므로, 작성해 주신 쿼리처럼 모든 조인에 company_code 컬럼을 사용하셔도 문제 없습니다. 
다만, 효율성의 측면에서 권장하지는 않습니다. 

 

Senior_Manager Table:

Manager Table:

위 두 테이블을 LEFT JOIN 할 때 company_code 컬럼을 기준으로 하면,
senior_manager_code = 'SM2'인 데이터에도 'SM1'일 때의 manager_code가 동일하게 들어가면서 더 큰 테이블이 생성되기 때문입니다. 


또한, 만약 이 문제에서 요구하는 바가 'SM2가 관리하는 manager의 코드를 출력'과 같은 것이었다면 잘못된 답을 도출하게 됩니다. 

섹션 4번에 2번 문제 질문입니다.

0

107

2

4번 문제

0

91

1

Top competitors 에서 having count(h.hacker_id)로 해도 되나요?

0

267

1

leetcode 620 group by 질문이요

0

210

2

강의 일시정지/ 기간연장 검토 요청

0

386

1

4번 문제 group by 질문

0

325

2

세트2 4번 문제풀이 해설에 관한 질문

0

359

2

Weather Observation Station 11_ not like 사용

0

270

1

Placements에서 LEFT JOIN 뒤에 ON 조건

0

289

1

Set2 4번문제 질문 - New Companies

0

319

1

WHERE절 안 쓰고 HAVING COUNT(D.score = S.score) > 1 쓰면 왜 안되나요?

-1

714

1

as 2 space-separated values. 무슨 말인가요???

0

434

1

Weather observation Station 11 관련 질문

1

378

2

4번문제풀이

0

458

1

섹션3. Weather Observation Station 18 문제 관련

0

378

2

섹션 2에 1,2번 문제풀이 관하여

0

435

1

기한연장문의

0

332

1

Weather observation station 11 문제 not like

-1

371

1

inner join 과 left join

1

600

1

4번 BST 문제 틀리는 이유

0

348

1

4번 문제 질문

0

291

1

620. Not Boring Movies 문제 질문드립니다

0

290

1

binary tree 질문 입니다.

0

301

1

Top Competitors 질문있습니다 ㅠㅠ

0

248

1