IT/Database

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

또닝 2017. 4. 19. 11:48

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 컬럼) : 컬럼 그룹으로 나누어 행의 수 반환

'IT > Database' 카테고리의 다른 글

[오라클/ORACLE]오라클 함수  (0) 2017.04.20
[오라클/ORACLE]TNS 설정  (0) 2017.04.20
[오라클/ORACLE]INSERT, UPDATE, DELETE 구문  (0) 2017.04.19
[오라클/ORACLE]ora 에러  (0) 2017.04.12
[오라클/ORACLE] SQL 조인(JOIN)  (0) 2017.04.11