코딩 테스트/MySQL

[HackerRank] Contest Leaderboard

알밤바 2025. 8. 6. 09:54
728x90
반응형
 

Contest Leaderboard | HackerRank

Generate the contest leaderboard.

www.hackerrank.com


문제

 

 

문제 접근 방식

이번 문제도 서브쿼리를 활용하면 되는 문제이다.

 

문제에서 요구한 조건은 다음과 같다

1) hacker_id, name, total score (score 내림차순 정렬, 점수가 동일하면 hacker_id 오름차순 정렬)
2) total score가 0인 hacker 제외
3) total score : 모든 challenges에 대한 최대 점수(max)의 합

 

우선 total score는 각 hacker와 challenge의 최대 점수를 구해서 합하면 된다. 이때 서브쿼리를 활용할 것.

최대 점수를 구한 뒤, hackers 테이블과 조인을 하여 name 컬럼을 가져올 수 있도록 한다.

 

그 다음 문제에서 요구한 조건인 total score가 0인 hacker를 제외하는데, HAVING절을 활용하여 조건을 추가하기.

그리고 ORDER BY절로 정렬을 맞춰주면 끝.

SELECT A1.HACKER_ID, A2.NAME, SUM(A1.MAX_SCR) AS TOT_SCR
FROM (
    SELECT HACKER_ID, CHALLENGE_ID, MAX(SCORE) AS MAX_SCR
    FROM SUBMISSIONS
    GROUP BY HACKER_ID, CHALLENGE_ID
) A1
LEFT JOIN HACKERS A2
    ON A1.HACKER_ID = A2.HACKER_ID
GROUP BY A1.HACKER_ID, A2.NAME
HAVING SUM(A1.MAX_SCR) > 0
ORDER BY SUM(A1.MAX_SCR) DESC, A1.HACKER_ID
;
728x90
반응형

'코딩 테스트 > MySQL' 카테고리의 다른 글

[HackerRank] Placements  (2) 2025.08.08
[HackerRank] SQL Project Planning  (1) 2025.08.07
[HackerRank] Challenges  (2) 2025.08.05
[HackerRank] The PADS  (2) 2025.07.30
[HackerRank] Ollivander's Inventory  (2) 2025.07.29