SQL/문제풀이

[HackerRank] Top Competitors

응엉잉 2024. 5. 10. 10:03

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

 

Top Competitors | HackerRank

Query a list of top-scoring hackers.

www.hackerrank.com

1개 이상의 challange에서 최고득점을 한 해커의 hacker_id와 name을 출력하는 문제

SELECT s.hacker_id,
    h.name
FROM submissions s
    INNER JOIN challenges c ON s.challenge_id = c.challenge_id -- 문제 난이도를 table에 추가하기 위해 JOIN
    INNER JOIN difficulty d ON c.difficulty_level = d.difficulty_level -- 문제의 최고 score를 추가하기 위해
    INNER JOIN hackers h ON s.hacker_id = h.hacker_id -- hacker name을 추가하기 위해
WHERE s.score = d.score -- submission score랑 difficulty table의 score (문제 배점)랑 같은 경우만 출력
GROUP BY s.hacker_id, h.name -- hacker_id와 name으로 GROUP BY 해서 row의 갯수를 count할거임
HAVING COUNT(*) > 1 -- COUNT가 2 이상인 경우에 대해서만 필터링
ORDER BY COUNT(*) DESC, s.hacker_id -- 원하는대로 ORDER