본문 바로가기
개발/오라클

[Oracle] 오라클 OVER() 함수 사용방법 (OVER() PARTITION BY ~ )

by Jxdn 2020. 3. 31.
반응형

OVER 함수는 GROUP BY, ORDER BY를 이용하는 서브쿼리를 편리하게 대체하는 함수입니다.

 

GROUP BY 대체이기 때문에 ROW_NUMBER(), COUNT(), MAX(), MIN(), SUM(), AVG(), RANK() 등의 분석 함수와 함께 사용됩니다.

 

그리고 OVER() 사용 시 GROUP BY와 비슷하지만 레코드의 수는 변함이 없습니다.

 

[사용방법]

ROW_NUMBER() OVER( PARTITION BY 컬럼명 ORDER BY 컬럼명 )

※ PARTITION BY, ORDER BY 는 분석함수에 따라 한가지만 적을 수도 있고, 둘다 사용할 수 있습니다.

[사용예제]

Q.부서코드 별 그룹핑하여 부서코드 빠른 순서 기준으로 순번을 주고 싶을 때

A.

SELECT ROW_NUMBER() OVER(PARTITION BY DEPT_CD ORDER BY DEPT_CD) AS DEPT_RN
     , DEPT_CD
     , DEPT
  FROM DEPT

※ 여기서 ROW_NUMBER()는 순서ID를 채번하기 때문에 ORDER BY가 없으면 오류가 납니다.

Q. 부서의 속해 있는 임직원의 수를 세고 싶을 때 (임직원 정보의 레코드 수는 변함 없음)

A.

SELECT COUNT(*) OVER(PARTITION BY DEPT) AS DEPT_CNT
     , DEPT_CD
     , EMP_NAME
  FROM EMP

※ COUNT()는 DEPT의 개수를 확인하기 때문에 ORDER BY는 필요 없습니다.

 

요렇게 사용하시면 됩니다!

 

감사합니다.

반응형

댓글