https://www.hackerrank.com/challenges/contest-leaderboard/problem?isFullScreen=true
문제를 요약하자면
점수테이블과 참가자 테이블이 있다.
같은 문제를 여러번 풀 수 있고 이는 점수테이블에 저장된다고 할 때
참가자별로 같은 문제 중 가장 점수가 많은 문제 점수를 다 더해서 결과치로 보여줘라~
SELECT A.hacker_id, name, SUM(MAX_score) as total_score
FROM (
SELECT hacker_id, challenge_id, MAX(score) as MAX_score
FROM Submissions
GROUP BY 1,2
) as A
LEFT JOIN Hackers B
ON A.hacker_id = B.hacker_id
GROUP BY 1,2
HAVING 1=1
AND total_score != 0
ORDER BY total_score DESC, hacker_id;
FROM (
SELECT hacker_id, challenge_id, MAX(score) as MAX_score
FROM Submissions
GROUP BY 1,2
) as AjoinHVING)참고 :연산 후 조건은 HVING 이다!
아니;;;;;;;;;;;
처음에 CTE로 만들어 봤는데 계속 해러가 났다.
이유를 모르겠음..
WITH total_score AS (
SELECT A.hacker_id, A.challenge_id, A.name, MAX(B.score) as MAX_score
FROM Hackers A RIGHT JOIN Submissions B
ON A.hacker_id = B.hacker_id
GROUP BY 1,2
)
SELECT hacker_id, name, SUM(MAX_score) as total_sc
FROM total_score
GROUP BY 1,2
HAVING total_sc != 0
ORDER BY total_sc DESC, hacker_id;