https://www.hackerrank.com/challenges/contest-leaderboard/problem?isFullScreen=true
- 해커 테이블과 제출 테이블이 주어진다.
- 해커가 챌린지 중 얻은 가장 높은 점수들의 합을 hacker_id, name과 함께 출력해라
- 점수 합이 0점이면 제외
- total_score desc 순으로 정렬하고, 동점이라면, hacker_id asc 순
select s.hacker_id,h.name, sum(s.max_score) as total_score
from (select hacker_id, max(score) as max_score from submissions group by challenge_id, hacker_id) as s
join hackers h on s.hacker_id = h.hacker_id
group by s.hacker_id, h.name
having sum(s.max_score) > 0
order by total_score desc, s.hacker_id
select문을 통해, 출력할 컬럼을 지정한다.(hacker_id, name, sum(max_score))
쿼리를 통해 max(score)를 반환하도록 한다. 이 때, 챌린지당 가장 높은 점수를 반환해야 하기 때문에, group by로 challenge_id와 hacker_id를 묶는다.
hackers 테이블과 join한다. 외래키는 hacker_id
hacker_id와 name을 기준으로 묶고, max_score가 0 이상인지 확인한다.