선생님 코드 중에 궁금한 것이 있습니다.
174
작성한 질문수 10
문제 풀이중 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개 있을 경우) 원래 안되는건가요?
답변 1
1
구하려는 값이 무엇이냐에 따라 조인의 기준이 되는 컬럼도 달라질 수 있습니다.
이 문제는 각 직급마다 유니크한 값 개수를 구하는 것이므로, 작성해 주신 쿼리처럼 모든 조인에 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





