프로그래밍/MSSQL
[MSSQL] PARTITION BY 테이블 분할 함수
초보개발자꽁쥐
2017. 2. 9. 09:16
반응형
테이블 분할 함수 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
반응형