티스토리 뷰

데이터를 추출하다가 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함