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 = ) 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

+ Recent posts