RANK

Hyuntae Jung·2022년 7월 24일
0

MS SQL

목록 보기
12/41
post-thumbnail

1. RANK

: 값은 값일 떄 같은 번호를 부여함으로써 다음 값에는 같은 번호의 수만큼 건너뛰고 번호를 매기는 함수이다.

SELECT 칼럼명, RANK() OVER(ORDER BY 순위를 정할 기준 열)
  FROM 테이블명;

2. OVER

: 관련함수를 적용하기 전에 그 집합의 분할과 순서를 정하는 함수이다.

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로 시작된다.

3. DENSE_RANK

: 같은 번호의 수만큼 순위를 건너 뛰지 않고 바로 다음 번호를 매긴다.

SELECT year, q, amount,
	DENSE_RANK() OVER(ORDER BY amount DESC) AS 순위
  FROM test;

순위가 중복된 것이 있어도 순위를 순서대로 매긴다.

4. ROW_NUMBER

: 데이터의 정렬 순서에 따라 일련번호로 순위를 매긴다.(데이터의 값에 신경쓰지 않고 일련번호를 매기는 함수)

중복을 신경쓰지 않는다.

SELECT year, q, amount,
	ROW_NUMBER() OVER(ORDER BY amount DESC) AS 순위
  FROM test;

5. NTILE

: 데이터의 행의 수를 지정한 수로 균등하게 나누고, 그 분할된 그룹에 순차적으로 번호를 매긴다.

SELECT year, q, amount,
	NTILE(4) OVER(ORDER BY amount DESC) AS 순위
  FROM test;

amount 순으로 나열한 뒤 4개 단위로 순위를 매긴다.

6. PARTITION BY

: 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

0개의 댓글