medium, basic join
https://www.hackerrank.com/challenges/contest-leaderboard/problem?isFullScreen=true
먼저, 각 hacker별로 challenge들의 가장 높은 점수만 가져옴. 이것을 서브쿼리로 활용해 다시 hacker_id로 그룹화한 후 더해주게 되면 total score가 나옴. 점수 총합이 0점인 것들은 제외하라고 했으므로 HAVING절에서 처리 후 정렬
SELECT hacker_id,
MAX(name),
SUM(score) score
FROM(
SELECT h.hacker_id,
MAX(h.name) name,
MAX(score) score
FROM hackers h
JOIN submissions s
ON h.hacker_id = s.hacker_id
GROUP BY h.hacker_id, s.challenge_id) max_score
GROUP BY hacker_id
HAVING SUM(score) > 0
ORDER BY score DESC, hacker_id