본문 바로가기
MS SQL

MS SQL_PARTION사용법

by 디디찐 2022. 8. 2.
반응형

1.PARTION 이란?

쿼리 결과 집합을 파티션으로 분할해준다.


2.PARTION 사용법

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

 *순위함수 : ROW_NUMBER, RANK, DENSE_RANK
 *집계함수: SUM, AVG, MAX, MIN, COUNT

 

3. PARTION BY과 GROUP BY 차이점

  •  GROUP BY : 특정 원하는 컬럼에 대해 추출하여 결과값을 출력, 반환되는 행의 수 감소 , 중복제거
  •  PARTION BY: 전체데이터에서 원하는 결과값 보여줌
     

GROUP BY 예문

SELECT DEPT_CD, COUNT(DEPT_CD)AS COUNT 
  FROM CONTRACT_LIST
 GROUP BY DEPT_CD

결과

SELECT한 컬럼 중 집계함수와 반환하는 행의 수가 맞지 않을 경우 오류 발생

SELECT CONTRACT_NAME,DEPT_CD,COUNT(DEPT_CD)AS COUNT   -- 반환하는 행의 수 10<>3=3
  FROM CONTRACT_LIST
 GROUP BY DEPT_CD



결과

 참고: https://ggmouse.tistory.com/119 [초보개발자꽁쥐:티스토리]

 

 4. PARTION BY 사용예제

 PARTITION 사용예제1 날짜별 계약서 조회

SELECT *,ROW_NUMBER()OVER(PARTITION BY WRITE_DATE ORDER BY WRITE_DATE ASC) AS ROWNUM
  FROM CONTRACT_LIST
 ORDER BY WRITE_DATE ASC


  PARTITION 사용예제2 부서별 계약서 

 SELECT *,ROW_NUMBER()OVER(PARTITION BY DEPT_CD ORDER BY DEPT_CD ASC) AS ROWNUM, 
 	 COUNT(*) OVER (PARTITION BY DEPT_CD)AS TOTAL
   FROM CONTRACT_LIST


  PARTITION 사용예제 3 메일 수신 여부 별 만기일 빠른 순으로 조회

 SELECT *, ROW_NUMBER()OVER(PARTITION BY SEND_MAIL_YN ORDER BY EXPIRE_DATE ASC)AS ROWNUM, COUNT(*) OVER(PARTITION BY SEND_MAIL_YN) AS TOTAL
   FROM CONTRACT_LIST




볼 품 없지만 예제에 사용한 테이블 

SAMPLE_CONTRACT_LIST.txt
0.00MB

반응형

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

MS SQL_CASE WHEN THEN 조건식사용법  (0) 2022.08.16
MS SQL_PIVOT 사용법  (0) 2022.08.03
MS SQL_사용자 정의 함수 사용법  (0) 2022.08.02
MS SQL_프로시저 사용법  (0) 2022.08.01
MS SQL_페이징처리3/TOP()사용법  (0) 2022.07.31