출처: https://bumcrush.tistory.com/182 [맑음때때로 겨울]
반응형

오라클에서 OVER() 함수란 ?

 

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

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

 

 

예제를 보면 쉽게 이해가 될것이다.

select * from employees where department_id in(10, 20, 30);

 

employees 테이블

 

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 쿼리 문으로 인해 부서 전체의 평균이 구해진것을 알수있다.

반응형

+ Recent posts