본문 바로가기
IT/MSSQL

[MSSQL] PARTITION 함수 사용법 & 예제

by 베베야 2021. 5. 7.
728x90

오늘은 그룹 내에서 순위 및 그룹별 집계를 구할 때 사용하는

PARTITION 함수에 대해서 알아보도록 하겠습니다.

문법

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

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


테이블 만들기

use test
create table RNAK_TEST
(
부서 varchar(100)
,이름 varchar(100)
,점수 int
)


테이터 삽입

insert into RNAK_TEST values('A','일나',80)
insert into RNAK_TEST values('A','이나',70)
insert into RNAK_TEST values('A','삼나',30)
insert into RNAK_TEST values('B','사나',100)
insert into RNAK_TEST values('B','오나',90)
insert into RNAK_TEST values('B','육나',400)

 

 

데이터 조회

SELECT * FROM RNAK_TEST


이름별 등수

SELECT *, ROW_NUMBER() OVER(ORDER BY 점수 DESC) AS'Row' 
FROM RNAK_TEST

부서 이름 점수 Row
B    육나 400  1
B    사나 100  2
B    오나 90   3
A    일나 80   4
A    이나 70   5
A    삼나 30   6


부서별 등수

SELECT *, ROW_NUMBER() OVER(PARTITION BY 부서 ORDER BY 점수 DESC) 'Row' 
FROM RNAK_TEST

부서 이름 점수 Row
A    일나 80   1
A    이나 70   2
A    삼나 30   3
B    육나 400  1
B    사나 100  2
B    오나 90   3


부서별 총 점수

SELECT *, SUM(점수) OVER(PARTITION BY 부서) AS '부서별 총점' 
FROM RNAK_TEST

부서 이름 점수 부서별 총점
A    일나 80   180
A    이나 70   180
A    삼나 30   180
B    사나 100  590
B    오나 90   590
B    육나 400  590


PARTITION 함수를 사용해서 그룹별 집계를 쉽게 구해보시기 바랍니다.

반응형
그리드형

댓글