반응형
● 오라클에서 OVER() 함수란 ?
- GROUP BY, ORDER BY를 이용한 서브쿼리를 개선하기 위해 나옴 함수
- COUNT(), MAX(), MIN(), SUM(), AVG(), RANK(), ROW_NUMBER() 등과 같은 집계함수나 분석함수와 함께 사용된다.
예제를 보면 쉽게 이해가 될것이다.
select * from employees where department_id in(10, 20, 30);
HR 계정을 사용한 예제
select count(*) from employees where department_id in(10, 20, 30);
OVER() 를사용하지 않는다면 결과는
전체 행의 수인 9를 리턴받을수 있다.
OVER()를 사용해보자.
select count(*)over() from employees where department_id in(10, 20, 30);
차이점이 보일것이다. OVER()를 쓰게 되면 전체 ROW수만큼 리턴받는다.
● partiton by 란?
각행에 그룹화된 값을 넣는다고 생각하면 된다.
select
employee_id, department_id,
ROUND(avg(salary) over(partition by department_id),0) as 부서평균
from
employees
where
department_id in(10, 20, 30);
부서평균 열을 보게되면 partition by department_id 쿼리 문으로 인해 부서 전체의 평균이 구해진것을 알수있다.
반응형
'데이터베이스 > OracleDB' 카테고리의 다른 글
[ORACLE]오라클 함수 RANK() 활용 및 예제(WITHIN GROUP(ORDER BY ...) OVER (ORDER BY ...) (0) | 2020.01.21 |
---|---|
[Oracle]오라클 DECODE() 함수 사용방법 및 활용 예제 (0) | 2020.01.21 |
[Oracle 18c ] 오라클 서브쿼리(Subquery), 하위 질의 사용법 (0) | 2020.01.20 |
[Oracle 18c] 계정생성 방법 sys - SQL Developer (0) | 2020.01.20 |
[OracleDB 18c xe] HR계정 만드는 방법 (1) | 2020.01.20 |