https://www.hackerrank.com/challenges/contest-leaderboard/problem?isFullScreen=true
Column | Type |
hacker_id | Integer |
name | Integer |
Hackers 테이블:
- hacker_id : 해커의 id
- name : 해커의 이름
Column | Type |
submission_id | Integer |
hacker_id | Integer |
challenge_id | Integer |
score | Integer |
Submissions 테이블:
- submission_id : 제출물의 id
- hacker_id : 제출물을 작성한 해커의 id
- challenge_id : 제출물이 속한 챌린지의 id
- score : 제출물의 점수
Julia는 지난 코딩 대회에서 당신이 도와준 덕분에 이번 도전 과제도 맡기고 싶어 합니다!
해커의 총 점수는 모든 챌린지에서 얻은 최대 점수의 합입니다. 해커의 hacker_id, name, 그리고 총 점수를 내림차순으로 정렬하여 출력하는 쿼리를 작성하세요. 만약 여러 해커가 동일한 총 점수를 얻었다면, hacker_id를 오름차순으로 정렬합니다. 총 점수가 0인 해커는 결과에서 제외합니다.
select
hacker_id,
challenge_id,
max(score) max_challenge_score
from Submissions
group by hacker_id , challenge_id
해커별로 제출한 챌린지 최고점수를 출력하기 위해서 hacker_id와 challenge_id로 그룹화하고 score의 최대값을 구한다.
select
hacker_id,
sum(max_challenge_score)
from
(select
hacker_id,
challenge_id,
max(score) max_challenge_score
from Submissions
group by hacker_id , challenge_id) a
group by hacker_id
위의 쿼리를 서브쿼리로 하고 다시 한번 그룹화해서 해커별로 획득한 최고 점수들의 합계를 구한다.
select
h.hacker_id,
h.name,
ss.sum_score
from Hackers h
inner join
(select
hacker_id,
sum(max_challenge_score) sum_score
from
(select
hacker_id,
challenge_id,
max(score) max_challenge_score
from Submissions
group by hacker_id , challenge_id) a
group by hacker_id) ss on h.hacker_id = ss.hacker_id
Hackers 테이블과 결합하고 해커의 id, 이름, 획득한 점수를 출력한다.
select
h.hacker_id,
h.name,
ss.sum_score
from Hackers h
inner join
(select
hacker_id,
sum(max_challenge_score) sum_score
from
(select
hacker_id,
challenge_id,
max(score) max_challenge_score
from Submissions
group by hacker_id , challenge_id) a
group by hacker_id) ss on h.hacker_id = ss.hacker_id
where ss.sum_score != 0
order by ss.sum_score desc, h.hacker_id
총점수로 내림차순, 점수가 같은 경우 hacker_id로 오름차순 정렬하고 총점수가 0인 해커들은 제외해주면 완료!
어제 풀었던 문제보다 간단한것같기도 하고...
'코딩일기' 카테고리의 다른 글
알고리즘 코드카타 119 - 숫자 카드 나누기 (0) | 2024.07.28 |
---|---|
SQL 코드카타 176 - SQL Project Planning (0) | 2024.07.28 |
알고리즘 코드카타 118 - 거리두기 확인하기 (0) | 2024.07.26 |
SQL 코드카타 174 - Challenges (0) | 2024.07.26 |
알고리즘 코드카타 117 - 마법의 엘리베이터 (0) | 2024.07.25 |