HackerRank | Top Competitors

jeonghens·2025년 6월 1일
0

SQL: HackerRank

목록 보기
29/49

HackerRank Top Competitors


문제

2개 이상의 challenge에서 만점을 받은 해커의 hacker_id와 name을 출력하는 문제이다.

만점 challenge 개수를 기준으로 내림차순 정렬하고, 동률일 경우 hacker_id를 기준으로 오름차순 정렬해야 한다.


풀이

JOIN 연산을 통해 SUBMISSIONS를 기준으로 CHALLENGES, DIFFICULTY, HACKERS 테이블을 연결했다.

그리고 S.SCORE = D.SCORE 조건으로 만점인 제출(SUBMISSION_ID)만 남기고, 그룹화로 만점을 2개 이상 받은 해커만 남겼다.

마지막으로 만점 개수 기준 내림차순, HACKER_ID 기준 오름차순으로 정렬하여 HACKER_ID와 NAME이 출력되도록 했다.


SELECT
    S.HACKER_ID,
    H.NAME
FROM
    SUBMISSIONS AS S
    JOIN HACKERS AS H ON S.HACKER_ID = H.HACKER_ID
    JOIN CHALLENGES AS C ON S.CHALLENGE_ID = C.CHALLENGE_ID
    JOIN DIFFICULTY AS D ON C.DIFFICULTY_LEVEL = D.DIFFICULTY_LEVEL
WHERE
    S.SCORE = D.SCORE
GROUP BY
    S.HACKER_ID,
    H.NAME
HAVING
    COUNT(S.SUBMISSION_ID) >= 2
ORDER BY
    COUNT(S.SUBMISSION_ID) DESC,
    S.HACKER_ID ASC;
profile
알고리즘이나 SQL 문제 풀이를 올리고 있습니다. 피드백 환영합니다!

0개의 댓글