: 값은 값일 떄 같은 번호를 부여함으로써 다음 값에는 같은 번호의 수만큼 건너뛰고 번호를 매기는 함수이다.
SELECT 칼럼명, RANK() OVER(ORDER BY 순위를 정할 기준 열) FROM 테이블명;
: 관련함수를 적용하기 전에 그 집합의 분할과 순서를 정하는 함수이다.
SELECT year, q, amount,
RANK() OVER(ORDER BY amount)
FROM test;
UPDATE test SET amount = 3.4
WHERE amount = 3.3;
SELECT year, q, amount,
RANK() OVER(ORDER BY amount) AS 순위
FROM test;
3.4가 중복되어 이후
순위
가 3이 아닌 4로 시작된다.
: 같은 번호의 수만큼 순위를 건너 뛰지 않고 바로 다음 번호를 매긴다.
SELECT year, q, amount,
DENSE_RANK() OVER(ORDER BY amount DESC) AS 순위
FROM test;
순위
가 중복된 것이 있어도순위
를 순서대로 매긴다.
: 데이터의 정렬 순서에 따라 일련번호로 순위를 매긴다.(데이터의 값에 신경쓰지 않고 일련번호를 매기는 함수)
중복을 신경쓰지 않는다.
SELECT year, q, amount, ROW_NUMBER() OVER(ORDER BY amount DESC) AS 순위 FROM test;
: 데이터의 행의 수를 지정한 수로 균등하게 나누고, 그 분할된 그룹에 순차적으로 번호를 매긴다.
SELECT year, q, amount,
NTILE(4) OVER(ORDER BY amount DESC) AS 순위
FROM test;
amount
순으로 나열한 뒤 4개 단위로순위
를 매긴다.
: PARTITION BY
로 먼저 기준열을 고정한 후 순위함수 RANK() OVER(ORDER BY)
를 적용한다.
SELECT 칼럼명, 순위함수() OVER(PARTITION BY 그룹에 기준열 ORDER BY 순위를 정할 기준열) FROM 테이블
SELECT year, q, amount,
RANK() OVER(PARTITION BY year ORDER BY amount DESC) AS 순위
FROM test;
year
을 먼저 기준으로 잡고amount
를 DESC 한다.
강의: ms sql 2014 제대로 배우기 1