알고리즘/해커랭크
[MySql/Join] HackerRank Contest Leaderborad
waterground
2022. 1. 14. 15:38
1. 문제
Contest Leaderboard | HackerRank
Generate the contest leaderboard.
www.hackerrank.com
2. 풀이
- 학생별 + 챌린지별로 점수의 최댓값을 구한 후 그 값을 더해줘야 한다.
- 따라서, 학생별 챌린지별로 점수의 최댓값을 먼저 구한후 hacker 테이블과 join해 점수의 합을 구한다.
- 점수의 최댓값이 0일 경우 제외하며, 정렬 순서에 유의한다.
3. 코드
select h.hacker_id, h.name, sum(score)
from (
select hacker_id, challenge_id, max(score) as score
from submissions
group by hacker_id, challenge_id) t
join hackers as h on t.hacker_id=h.hacker_id
group by h.hacker_id, h.name
having sum(score) > 0
order by sum(score) desc, h.hacker_id;