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 함수를 사용해서 그룹별 집계를 쉽게 구해보시기 바랍니다.
반응형
그리드형
'IT > MSSQL' 카테고리의 다른 글
[MSSQL] 힙 테이블이란? (클러스터 인덱스가 없음) (0) | 2021.06.02 |
---|---|
[MSSQL] SYS.XP_CMDSHELL 엑세스가 거부되었습니다. 해결방법 (0) | 2021.05.13 |
[MSSQL] 데이터베이스 백업 압축 설정 2가지 방법 (0) | 2021.04.28 |
[MSSQL] 병렬처리(parallelism) 설정 & 분석 (0) | 2021.04.28 |
[MSSQL] 프로파일러(Profiler) 실행 & 쿼리 추적 사용법 (0) | 2021.04.27 |
댓글