Allen's 데이터 맛집
HackerRank lv. Medium : Top Competitors 본문
문제
풀이
이 문제는 Julia가 코딩 대회를 개최하고, 전체 점수를 받은 해커들의 리더보드를 작성하는 데 도움을 요청하는 것입니다. 여러 개의 챌린지에서 전체 점수를 획득한 해커들의 hacker_id와 이름을 출력해야 합니다. 출력 결과는 해커가 전체 점수를 받은 챌린지의 총 수에 따라 내림차순으로 정렬되어야 합니다. 만약 동일한 수의 챌린지에서 전체 점수를 획득한 해커가 여러 명이라면, 그들은 hacker_id를 오름차순으로 정렬해야 합니다.
select
h.hacker_id
,h.name
from submissions s
inner join challenges c on s.challenge_id = c.challenge_id
inner join difficulty d on c.difficulty_level = d.difficulty_level
inner join hackers h on s.hacker_id = h.hacker_id
where
s.score = d.score and c.difficulty_level = d.difficulty_level
group by
h.hacker_id, h.name
having
count(s.hacker_id) > 1
order by
count(s.hacker_id) desc, s.hacker_id asc
1. submissions, challenges, difficulty, hackers 테이블을 조인합니다.
2. 각 해커가 풀었던 챌린지와 해당 챌린지의 난이도를 조인합니다.
3. 각 해커가 받은 점수가 해당 챌린지의 최대 점수와 같은 경우를 선택합니다.
4. 해커의 hacker_id와 이름을 그룹화합니다.
5. 해커가 전체 점수를 받은 챌린지 수가 1보다 큰 경우를 선택합니다.
6. 전체 점수를 받은 챌린지 수를 내림차순으로, hacker_id를 오름차순으로 정렬합니다.
https://www.hackerrank.com/challenges/full-score/problem?isFullScreen=true