해결된 질문
작성
·
180
0
Select Distinct s.hackers, h.name, s.final
From (
Select hackers, sum(maxscore) over (partition by hackers) as final
From
(
Select Distinct hacker_id as hackers, challenge_id,
max(score) over (partition by hacker_id, challenge_id) as maxscore
From Submissions
) sub
) s
Inner join Hackers h on h.hacker_id = s.hackers
Where s.final > 0
Order by s.final desc
답변 1
0
윈도우 함수를 쓰면서 더 간단히 줄이기는 어려울 것 같습니다.
사실 이 쿼리는 윈도우 함수와 서브쿼리가 많아 효율적이지는 않아요. max 등 단순 집계 함수로 풀 수 있는 문제라면 그렇게 푸는 편이 좋습니다.
하지만 연습하는 단계에서 여러 방법으로 시도해 보시는 것은 좋은 학습 방법이 될 수 있습니다 :)