데이터베이스/OracleDB
[Oracle 18c] 오라클 OVER ()함수, partiton by 활용 예제
비전공출신개발자
2020. 1. 21. 09:57
반응형
● 오라클에서 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 쿼리 문으로 인해 부서 전체의 평균이 구해진것을 알수있다.
반응형