SQL 문제

[HackerRank] Contest Leaderboard

빙수빈수 2023. 10. 16. 10:30

https://www.hackerrank.com/challenges/contest-leaderboard/problem?isFullScreen=true 

 

Contest Leaderboard | HackerRank

Generate the contest leaderboard.

www.hackerrank.com

[코드]

select b.hacker_id, b.name, sum(score)
from (select hacker_id, challenge_id, max(score) as score
      from Submissions
      group by hacker_id, challenge_id) as a
inner join Hackers as b
on a.hacker_id = b.hacker_id
group by b.hacker_id, b.name
having sum(a.score) > 0
order by sum(a.score) desc, b.hacker_id;

 

[고찰]

 이번 문제는 한 헤커당 같은 문제를 여러번 풀 수 있어 그 중 가장 점수가 큰 것을 합산값으로 사용해야 하는 것이었다. 이를 위해서 서브쿼리를 사용해 헤커 아이디와 문제별로 가장 점수가 큰 테이블을 만들고, 이 테이블과 Hacker 테이블을 inner join해야 했다.