[Oracle] 그룹별 최대값 구하는 2가지 방법

오라클에서 그룹별 최댓값을 구하기 위해서는 집계함수(GROUP BY 절)를 사용하는 방법과, 분석함수(OVER 절)를 사용하는 방법을 주로 사용한다. 조회하는 상황에 따라서 필요한 형태의 방법을 사용하면 된다. GROUP BY 절은 기본적인 문법이라서 많이 알고 있지만 OVER 절은 고급 문법이기 때문에 조금 이해하는 시간이 필요할 수 있다.

 

목차
  1. 집계함수를 사용하여 최댓값 구하기 (GROUP BY 절)
  2. 분석함수를 사용하여 최댓값 구하기 (OVER 절)

 

집계함수를 사용하여 최댓값 구하기 (GROUP BY 절)

SELECT job
     , MAX(sal) AS max_sal
  FROM emp
 WHERE job IN ('MANAGER', 'SALESMAN', 'CLERK')
 GROUP BY job

 

 

GROUP BY 절과 MAX 집계함수를 사용하여 직업별 최고 급여를 구하는 예제이다.

 

분석함수를 사용하여 최댓값 구하기 (OVER 절)

SELECT empno
     , ename
     , job
     , sal
     , MAX(sal) OVER(PARTITION BY job ORDER BY job) AS max_sal
  FROM emp
 WHERE job IN ('MANAGER', 'SALESMAN', 'CLERK')

 

 

OVER 절을 사용하여 직업별 최고 급여를 자신의 급여 옆에 표시하는 예제이다.

 

OVER 절을 사용하면 GROUP BY 절과 다르게 원본 데이터를 그대로 표시하면서, 조회된 데이터 내에서 최고 급여를 찾아서 자신의 행에 표시할 수 있다. 첫 번째 예제와 비교하면서 보면 차이를 확인할 수 있을 것이다.

예제쿼리(테이블포함).txt
0.00MB

 

[Oracle] 분석함수 사용법 (OVER 절)

오라클에서 분석함수를 사용할 때 PARTITION BY를 사용하여 그룹으로 묶어서 연산을 할 수 있다. GROUP BY 절을 사용하지 않고, 조회된 각 행에 그룹으로 집계된 값을 표시할 때 OVER 절과 함께 PARTITION B

gent.tistory.com

 

[Oracle] 최대값 구하는 방법 (MAX 함수)

오라클에서 최댓값과 최솟값을 구하기 위해서는 집계 함수 MAX(최대값), MIN(최소값)를 사용하면 된다. 집계 함수는 주로 GROUP BY 절과 함께 많이 사용하며, SELECT 절에 집계 함수만 있다면 GROUP BY 절

gent.tistory.com

 

댓글

Designed by JB FACTORY