HackerRank - Top Competitors

-·2022년 8월 20일
0
SELECT Hack.hacker_id, Hack.name FROM 
Hackers Hack, Challenges Cha, Submissions Sub, Difficulty Diff
WHERE Hack.hacker_id = Cha.hacker_id
AND Cha.hacker_id = Sub.hacker_id
AND Cha.challenge_id = Sub.challenge_id
AND Cha.difficulty_level = Diff.difficulty_level
AND Sub.score = Diff.score
GROUP BY Hack.hacker_id, Hack.name
HAVING COUNT(Hack.hacker_id) > 1
ORDER BY COUNT(Hack.hacker_id) DESC, Hack.hacker_id;

왜 안되지 계속 생각했는데

WHERE Hack.hacker_id = Cha.hacker_id
AND Cha.hacker_id = Sub.hacker_id

여기가 문제였음

Challenges의 hacker_id는 챌린지를 만든 해커의 id이다.

여기서는 점수를 비교할꺼기 때문에 저 hacker_id는 필요가없다.

Submissions <==> Hackers

Submissions <==> Challenges

이렇게 엮어주면 된다.

SELECT Hack.hacker_id, Hack.name FROM 
Hackers Hack, Challenges Cha, Submissions Sub, Difficulty Diff
WHERE Hack.hacker_id = Sub.hacker_id
AND Cha.challenge_id = Sub.challenge_id
AND Cha.difficulty_level = Diff.difficulty_level
AND Sub.score = Diff.score
GROUP BY Hack.hacker_id, Hack.name
HAVING COUNT(Hack.hacker_id) > 1
ORDER BY COUNT(Hack.hacker_id) DESC, Hack.hacker_id;

통과~

profile
거북이는 오늘도 걷는다

0개의 댓글