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인 결과값만 다시 추출하여
우리가 원하는 결과 값을 얻습니다.
'개발 > MSSQL' 카테고리의 다른 글
[SQL] IDENTITY 자동증가되는 값을 바꿔보자. (2) | 2019.07.31 |
---|---|
[SQL] 쿼리를 잠깐 멈췄다 실행해보자.(feat. sleep / wait / delay) (9) | 2019.07.17 |
ISNULL, COALESCE (2) | 2017.01.09 |
Like 문 쓰지말자 (4) | 2017.01.09 |
BIT 연산 (0) | 2016.06.21 |