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 |