Allen's 데이터 맛집

HackerRank lv. Medium : Top Competitors 본문

SQL/SQL 문제풀이

HackerRank lv. Medium : Top Competitors

Allen93 2024. 2. 29. 07:43

문제

 

 

 

 

풀이

이 문제는 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

 

Top Competitors | HackerRank

Query a list of top-scoring hackers.

www.hackerrank.com

 

728x90