티스토리 뷰
데이터를 추출하다가 partition by를 사용할 일이 생겨서 간단하게 정리.
부끄럽지만 처음 사용해보는 거라서 조금 헤맸다..
자세히 설명해둔 글들이 많이 있었는데 주로 이 글과 이 글을 참고했다.
ID Name Score Subject
1 Joe 100 Math
2 Jim 99 Math
3 Tim 98 Math
4 Joe 99 History
5 Jim 100 History
6 Tim 89 History
7 Joe 80 Geography
8 Tim 100 Geography
9 Jim 99 Geography
위와 같은 데이터가 있을 때 각 subject별로 점수 순위 상위 2명까지 추출하고 싶은 경우에는 다음과 같은 쿼리를 사용하면 된다.
select * from (
SELECT Subject, Name, RANK() OVER (PARTITION BY Subject ORDER BY Score DESC) as RN
FROM Table
) a
where a.RN <= 2
아래는 위 쿼리의 결과
Subject Name Rank
Math Joe 1
Math Jim 2
History Jim 1
History Joe 2
Geography Tim 1
Geography Jim 2
댓글