Top Competitors 질문있습니다 ㅠㅠ
239
37 asked
select H.hacker_id, h.name
from hackers as h
inner join Challenges as c on h.hacker_id = c.hacker_id
inner join Difficulty as d on c.Difficulty_level = d.Difficulty_level
inner join submissions as S on C.Challenge_id = S.Challenge_id
where d.Difficulty_level = c.Difficulty_level
group by H.hacker_id, h.name
having count(H.hacker_id) > 1
order by count(H.hacker_id) desc, h.hacker_id
이런식으로 코드를 짰는데 답이 계속 다르게 나오네요 조인 순서에 문제가 있는건지 뭐가 문제인건지를 잘모르겠습니다 ㅠㅠ
선생님과 다르게 코드를 다르게 짠 부분은 저는 hackers 테이블에서 challenges 그다음 difficulty 그다음 submission 으로 조인했다는 점인데 뭐가 문제일까요??
Answer 1
1
JOIN 절 :
challenges 테이블의 hacker_id는 challenge를 만든 사람의 id, submissions 테이블의 hacker_id는 challenge의 답안을 제출한 사람의 id로 서로 의미하는 바가 다릅니다.
문제에서 요구하는 바는 답안 제출(submission)자의 id와 이름이므로 hackers 테이블의 hacker_id를 challeges가 아니라 submissions의 hacker_id와의 조인 키로 사용하셔야 합니다.
WHERE 절 :
where d.Difficulty_level = c.Difficulty_level 는 조인을 할 때 이미 써 준 조건이므로 다시 쓸 필요가 없으며, 이렇게 조인을 하는 이유는 difficulty 테이블로부터 해당 레벨의 만점(full score)이 몇 점인지를 알아내기 위함입니다.
만점을 다 맞은 사람만 뽑아내야 하므로 WHERE s.score = d.score 조건이 있어야 합니다.
섹션 4번에 2번 문제 질문입니다.
0
100
2
4번 문제
0
78
1
Top competitors 에서 having count(h.hacker_id)로 해도 되나요?
0
255
1
leetcode 620 group by 질문이요
0
198
2
강의 일시정지/ 기간연장 검토 요청
0
376
1
4번 문제 group by 질문
0
315
2
세트2 4번 문제풀이 해설에 관한 질문
0
346
2
Weather Observation Station 11_ not like 사용
0
263
1
Placements에서 LEFT JOIN 뒤에 ON 조건
0
279
1
Set2 4번문제 질문 - New Companies
0
312
1
WHERE절 안 쓰고 HAVING COUNT(D.score = S.score) > 1 쓰면 왜 안되나요?
-1
698
1
as 2 space-separated values. 무슨 말인가요???
0
426
1
Weather observation Station 11 관련 질문
1
368
2
4번문제풀이
0
449
1
섹션3. Weather Observation Station 18 문제 관련
0
367
2
섹션 2에 1,2번 문제풀이 관하여
0
427
1
기한연장문의
0
326
1
Weather observation station 11 문제 not like
-1
358
1
inner join 과 left join
1
591
1
4번 BST 문제 틀리는 이유
0
337
1
4번 문제 질문
0
285
1
620. Not Boring Movies 문제 질문드립니다
0
279
1
binary tree 질문 입니다.
0
292
1
set4. 4번
0
314
1

