본문 바로가기
IT

[오라클/ORACLE]OVER() 함수

by 또닝 2017. 4. 19.

OVER 함수

- GROUP BY, ORDER BY를 이용한 서브쿼리를 개선하기 위해 나옴 함수

- COUNT(), MAX(), MIN(), SUM(), AVG(), RANK(), ROW_NUMBER() 등과 같은 집계함수나 분석함수와 함께 사용된다. 

 

SELECT DEPT_NM, COUNT(*) FROM HRM_DEPT

이 쿼리를 실행하면 에러메세지가 나온다.

 

 

 

SELECT DEPT_NM, COUNT (*) FROM HRM_DEPT GROUP BY DEPT_NM

OVER 함수를 쓰지 않으면 GROUP BY를 이용하여 전체 행의 수를 확인할 수 있다.

 

SELECT DEPT_NM, COUNT (*) OVER () FROM HRM_DEPT

OVER 함수를 쓰면 GROUP BY를 이용하지 않아도 전체 행의 수를 구할 수 있다.

 

SELECT DEPT_NM, COUNT (DISTINCT DEPT_CD) OVER () FROM HRM_DEPT

부서이름과 중복되지 않는 부서코드를 가진 부서 행의 수를 반환

 

SELECT DEPT_NM, COUNT (*) OVER (PARTITION BY DEPT_CD) FROM HRM_DEPT

부서이름과 부서코드로 나눈 부서 행의 수를 반환

 

PARTITION BY 는 GROUP BY 같은 개념이라고 생각하면 된다.

 

COUNT(*) OVER() : 전체 행의 수 반환

COUNT(*) OVER(PARTITION BY 컬럼) : 컬럼 그룹으로 나누어 행의 수 반환