[오라클 SQL] 오라클 OVER() 함수 사용방법
안녕하세요.
오늘은 오라클 OVER() 함수에 대해서 알아보려고 합니다.
OVER() 함수란?
- ORDER BY, GROUP BY 서브쿼리를 개선하기 위한 함수
OVER() 함수는 위에서도 얘기 하였듯이, ORDER BY, GROUP BY 서브쿼리를 개선하기 위해 만든 함수입니다.
즉, ORDER BY, GROUP BY 구문을 OVER 함수로 대체할 수 있다는 건데요.
예제를 통해서 알아보겠습니다.
먼저 다음과 같은 SQL 문이 있습니다. 이 SQL문은 학교(SCHOOL_NO) 별, 전체 학생 수를 구하는 SQL문 입니다.
1 2 3 4 5 6 | SELECT SCHOOL_NO, COUNT(*) AS STUDENT_COUNT FROM WIN.STUDENT WHERE 1 = 1 GROUP BY SCHOOL_NO ORDER BY SCHOOL_NO
|
위와 같이 GROUP BY, ORDER BY 구문을 이용하여 SQL문을 작성한 것을 볼 수 있습니다.
실행 결과
위와 같이 각 학교 별, 학생수가 계산돼서 조회된 것을 보실 수 있는데요.
이제 위의 쿼리에서 GROUP BY, ORDER BY 구문을 OVER() 함수로 대체해 보도록 하겠습니다.
OVER() 함수 SQL
1 2 3 4 |
SELECT DISTINCT SCHOOL_NO, COUNT(*) OVER(PARTITION BY SCHOOL_NO) AS STUDENT_COUNT FROM WIN.STUDENT WHERE 1 = 1 |
실행 결과
이렇게 GROUP BY, ORDER BY 구문을 사용했을 떄와 같이 같은 결과가 나오는 것을 확인할 수 있습니다.
참고로 COUNT() 함수 말고도, SUM(), MIN(), MAX(), AVG(), RANK() 등과 같이 다른 집계함수들과 함께 쓸 수도 있기 때문에 여러방면으로 응용 할 수 있습니다.
이로써, 간단히 OVER() 함수에 대해서 알아보았습니다.
감사합니다.^^