개발/MSSQL
[SQL] PARTITION BY
한번사는인생.
2017. 9. 1. 17:18
PARTITION BY
Group By 한 결과 중에 1위 값만 가져오고 싶을 때 사용한다.
아래 예시는 타입별 가장 최근 데이터를 가져오는 쿼리이다.
1 2 3 4 5 6 7 8 9 | SELECT N.num, N.[type], N.title, N.reg_date FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY [type] ORDER BY reg_date DESC) AS [rank], num, [type], title, reg_date FROM News.[NOTIFICATION] WHERE usable = 1 ) AS N WHERE N.[rank] = 1 ORDER BY [type] DESC; | cs |
랭크 함수는 ROW_NUMBER() , RANK() 등 상황에 맞게 사용하면 된다.
Group By 할 컬럼 값을 PARTITION BY 다음에 작성하면 됩니다.
그러면 서브 쿼리에서 결과 값은
타입별 등록일시로 구분되어서 쿼리 결과가 나올 겁니다.
거기서 나온 결과 값 중 rank가 1인 결과값만 다시 추출하여
우리가 원하는 결과 값을 얻습니다.