본문 바로가기

프로그래밍/MSSQL

[MSSQL] PARTITION BY 테이블 분할 함수

반응형

 

 

 

테이블 분할 함수 PARTITION에 대해 알아보자

 

 

PARTITION 함수

그룹 내 순위 및 그룹 별 집계를 구할 때 유용하게 사용할 수 있다.

 

SELECT 순위함수() OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명) 
FROM 테이블명 

SELECT 집계함수(컬럼명) OVER (PARTITION BY 컬럼명)
FROM 테이블명

 

순위함수

- ROW_NUMBER

- RANK

- DENSE_RANK

 

[MSSQL] ROW_NUMBER, RANK, DENSE_RANK 순위함수

 

 

집계함수

- SUM(합계)

- AVG(평균)

- MAX, MIN(최대, 최소)

- COUNT(개수)

 

 

 

 

 

 

예제1. 학생들의 등수 매기기

 

원본 데이터

 

다음과 같은 데이터가 있을때, 이 학생들의 등수를 매기려고 한다.

 

순위함수인 ROW_NUMBER를 이용하면 쉽게 등수를 매길 수 있다.

 

SELECT *, ROW_NUMBER() OVER(ORDER BY Score DESC) 'Row'
FROM TABLE_A

 

결과 데이터

 

 

 

 

예제2. 학생들의 반별 등수 매기기

하지만, 이 학생들은 모두 같은반(Class)이 아닌 'A', 'B' 반으로 구분되어 있다.

 

통째로가 아니라 각 반 내에서의 등수를 매기고 싶다!

이때 바로 PARTITION으로 반을 분할하고 등수를 매기면된다.

 

 

SELECT *, ROW_NUMBER() OVER(PARTITION BY Class ORDER BY Score DESC) 'P_Row'
FROM TABLE_A

 

 

결과 데이터

 

 

 

 

 

예제2. 반별 총 점수

해당 학생이 해당하는 반의 총 점수를 계산해보자

 

SELECT *, SUM(Score) OVER(PARTITION BY Class) AS 'C_Sum'
FROM TABLE_A

 

결과 데이터

 

 

 

 

반응형