반응형
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는 필요 없습니다.
요렇게 사용하시면 됩니다!
감사합니다.
반응형
'개발 > 오라클' 카테고리의 다른 글
[Oracle] 오라클 소수점 올림/내림/반올림/버림 사용방법 (0) | 2020.04.01 |
---|---|
[Oracle] 오라클 시노님(Synonym) 사용방법(생성/조회/삭제) (0) | 2020.03.31 |
[Oracle] 오라클 LPAD, RPAD 함수 사용방법 (0, 공백 채우기) (0) | 2020.03.31 |
[Oracle] 오라클 조건절/CASE구문/DECODE구문 (0) | 2020.03.31 |
[Oracle] 오라클 날짜 포맷/날짜 연산/ 날짜 계산 (0) | 2020.03.31 |
댓글