하루에 하나씩 공부하기
[해커랭크 Basic Join] Top Competitors 본문
- 문제
만점이 2개 이상인 해커의 ID, 이름 출력
Top Competitors | HackerRank
Query a list of top-scoring hackers.
www.hackerrank.com
- 키포인트
조인 방식에 대해 한참 잘못 연결
그리고 문제를 잘 읽자(HAVING 조건 생략한 채 풀이)
- 쿼리
SELECT S.HACKER_ID, H.NAME
FROM SUBMISSIONS S
JOIN CHALLENGES C ON S.CHALLENGE_ID = C.CHALLENGE_ID
JOIN DIFFICULTY D ON C.DIFFICULTY_LEVEL = D.DIFFICULTY_LEVEL
JOIN HACKERS H ON S.HACKER_ID = H.HACKER_ID
WHERE S.SCORE=D.SCORE
GROUP BY S.HACKER_ID, H.NAME
HAVING COUNT(DISTINCT S.CHALLENGE_ID)>1
ORDER BY COUNT(DISTINCT(S.CHALLENGE_ID)) DESC, S.HACKER_ID ASC;
가장 공통되는 테이블을 먼저 설정 후 조인
특히 HACKER_ID는 중복값을 가지므로 첫번째 조인은 CHALLENGE_ID를 기준으로 조인