난이도가 낮은 문제로 자신감을 채우고 나니 훨씬 낫다!
비록 여전히 영어 지문을 번역해서 풀고 있긴 하지만, 스스로 풀어냈다.
내일 아침부터 다시 문제를 지속적으로 풀어보면 더 익숙해지고 발전할 수 있겠다는 생각이 든다.
문제
DIFFICULTY : Medium, SKILL : Intermediate, MySQL
You did such a great job helping Julia with her last coding contest challenge that she wants you to work on this one, too! The total score of a hacker is the sum of their maximum scores for all of the challenges. Write a query to print the hacker_id, name, and total score of the hackers ordered by the descending score. If more than one hacker achieved the same total score, then sort the result by ascending hacker_id. Exclude all hackers with a total score of 0 from your result. 문제해석 1) 해커의 총 점수는 모든 도전 과제에 대한 최대 점수의 합이다. 2) HACKER_ID, NAME, TOTAL SCORE를 출력한다. 3) 해커의 총 점수는 내림차순으로 정렬하고, 두 명 이상의 해커가 동일한 총 점수를 달성한 경우 HACKER_ID를 오름차순으로 정렬한다. 4) 총 점수가 0인 모든 해커는 결과에서 제외한다. |
INPUT 테이블
The following tables contain contest data:
Hackers: The hacker_id is the id of the hacker, and name is the name of the hacker.
Submissions: The submission_id is the id of the submission, hacker_id is the id of the hacker who made the submission, challenge_id is the id of the challenge for which the submission belongs to, and score is the score of the submission.
OUTPUT 결과 샘플
Explanation
Hacker 4071 submitted solutions for challenges 19797 and 49593, so the total score = 95 + max(43, 96) = 191.
Hacker 74842 submitted solutions for challenges 19797 and 63132, so the total score = max(98, 5) + 76 = 174
Hacker 84072 submitted solutions for challenges 49593 and 63132, so the total score = 100 + 0 = 100.
The total scores for hackers 4806, 26071, 80305, and 49438 can be similarly calculated.
SQL CODE
SELECT H.HACKER_ID, H.NAME
, SUM(S.SCORE) AS SCORE
FROM HACKERS H
JOIN (
SELECT HACKER_ID, CHALLENGE_ID, MAX(SCORE) AS SCORE
FROM SUBMISSIONS
GROUP BY HACKER_ID, CHALLENGE_ID
) S
ON H.HACKER_ID = S.HACKER_ID
GROUP BY H.HACKER_ID, H.NAME
HAVING SUM(S.SCORE) != 0
ORDER BY SUM(S.SCORE) DESC, H.HACKER_ID ASC
;
SQL 결과
76971 Ashley 760
84200 Susan 710
76615 Ryan 700
82382 Sara 640
79034 Marilyn 580
78552 Harry 570
74064 Helen 540
78688 Sean 540
83832 Jason 540
72796 Jose 510
.
.
.
느낀점/개선점
추가 조사 | |
느낀점 | |
개선점 |