Mo!
(HackerRank) 해커랭크 SQL [Top Competitors] Oracle 풀이 본문
SQL

(HackerRank) 해커랭크 SQL [Top Competitors] Oracle 풀이

5사 2021. 12. 3.

문제 링크

https://www.hackerrank.com/challenges/full-score/problem?isFullScreen=true 

 

Top Competitors | HackerRank

Query a list of top-scoring hackers.

www.hackerrank.com

1개 초과 (2개 이상의) 챌린지에 대해 full scores를 획득한 각 hacker_idname을 출력
해커가 만점을 획득한 총 문제(챌린지) 수에 따라 출력을 내림차순으로 정렬
둘 이상의 해커가 동일한 수의 챌린지에서 full scores를 받은 경우 hacker_id를 기준으로 오름차순으로 정렬

 

JOIN을 사용한 풀이

 

 

-- submissions, challenges, difficulty, hackers 4개의 테이블을 조인해야 한다

 

where s.score = d.score

-- 챌린지에 대해 full scores 받은 해커의 id와 이름을 출력해야 하기 때문에 submission 테이블의 각 점수들과 difficulty 테이블의 점수가 동일해야 한다

 

group by s.hacker_id, h.name
having count(s.challenge_id) > 1

-- 해커 id와 이름으로 그룹핑을 한 후, 2개 이상의 챌린지에 만점을 받은 해커들만 출력해야 하기 때문에 having 절에 조건을 준다

 

order by count(s.challenge_id) desc, 1;

-- 만점을 받은 챌린지 수가 많은 순으로 정렬한다

-- 만점을 받은 챌린지 수가 동일할 경우 해커 id를 기준으로 오름차순으로 정렬되도록 한다

 

 

 

Comments