순위관련

RANK(), DENSE_RANK(), ROW_NUMBER()

설명

Rank() - 해당행에 대한 우선순위를 결정한다(중복우선순위 o)

Dense_Rank() - 해당행에 대한 우선순위를 결정한다(중복우선순위 x) 

Row_number()  - 조건을 만족한느 모든 행의 번호를 결정한다


OVER() - ORDER BY, GROUP BY 서브쿼리를 개선하기 위해 나온 함수

          - 집계함수 뒤에서 사용하며, 집계함수 외의 컬럼을 그룹으로 묶어준다.


OVER() 에 사용되는 OPTION

1. PARTITION BY : 그룹에서 파티션을 짓는다.

2. ORDER BY DESC

3. NULLS FIRST : NULL 데이터를 먼저 출력.

4. NULLS LAST : NULL 데이터를 나중에 출력.


#Temp 테이블

코드


1
2
3
4
5
SELECT V,
       RANK() OVER(ORDER BY V),
       DENSE_RANK() OVER(ORDER BY V),
       RANK() OVER(ORDER BY V)
  FROM #TEMP
cs


실행결과




OVER() 함수


COUNT(*)OVER() : 전체행 카운트

COUNT(*)OVER(PARTITION BY 컬럼) : 그룹단위로 나누어 카운트


MAX(컬럼)OVER() : 전체행 중에 최고값

MAX(컬럼)OVER(PARTITION BY 컬럼) : 그룹내 최고값


MIN(컬럼)OVER() : 전체행 중에 최소값

MIN(컬럼)OVER(PARTITION BY 컬럼) : 그룹내 최소값


SUM(컬럼)OVER() : 전체행 합

SUM(컬럼)OVER(PARTITION BY 컬럼) : 그룹내 합


AVG(컬럼)OVER() : 전체행 평균

AVG(컬럼)OVER(PARTITION BY 컬럼) : 그룹내 평균


STDDEV(컬럼)OVER() : 전체행 표준편차

STDDEV(컬럼)OVER(PARTITION BY 컬럼) : 그룹내 표준편차


RATIO_TO_REPORT(컬럼)OVER() : 현재행값/SUM(전체행값)

RATIO_TO_REPORT(컬럼)OVER(PARTITION BY 컬럼) : 현재행값 / SUM(그룹행값) 


'SQL > MS-SQL' 카테고리의 다른 글

NULL 비교하기  (0) 2017.09.19
일반집계함수 WINDOW FUNCTION  (0) 2017.09.07
트리거(Trigger)  (0) 2017.09.06
커서(Cursor)  (0) 2017.09.06
UNION ALL로 소계, 합계 구하기  (0) 2017.09.05

+ Recent posts