율코딩

[MySQL/HackerRank] Contest Leaderboard 문제 풀이 본문

SQL/HackerRank

[MySQL/HackerRank] Contest Leaderboard 문제 풀이

레아킴 2022. 5. 22. 15:58
반응형

https://www.hackerrank.com/challenges/contest-leaderboard/problem?isFullScreen=true 

 

Contest Leaderboard | HackerRank

Generate the contest leaderboard.

www.hackerrank.com

 

문제 설명

해커의 전체 점수는 각 해커의 챌린지별 가장 최고 점수의 합이다.
해커 id, 이름, 전체 점수를 출력하시오 (전체 점수의 내림차순, 해커 id의 오름차순 정렬)
전체 점수가 0인 데이터는 제외한다.

 

FROM절에서 서브쿼리로 각 챌린지별 최고점수를 구해서 메인쿼리에서 그 합을 구하는 방식으로 문제를 풀었다.

그리고 HAVING절을 이용하여 전체 점수가 0보다 크도록 조건을 걸어주었다.

 

SELECT hacker_id
       ,name
       ,SUM(max_score) as sum_score
FROM (SELECT h.hacker_id
      		,h.name
      		,MAX(score) as max_score
	FROM Hackers h 
    	INNER JOIN submissions s ON h.hacker_id = s.hacker_id
    	GROUP BY 1,2, challenge_id) t
GROUP BY 1,2
HAVING sum_score > 0
ORDER BY sum_score desc, hacker_id
반응형
Comments