• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

윈도우 함수를 이용해서 풀고 싶어서 써봤습니다. 더 간단하게 줄일 수 있을까요?

23.02.15 05:47 작성 조회수 127

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 등 단순 집계 함수로 풀 수 있는 문제라면 그렇게 푸는 편이 좋습니다.
하지만 연습하는 단계에서 여러 방법으로 시도해 보시는 것은 좋은 학습 방법이 될 수 있습니다 :)