[Oracle] 그룹별 최대값 구하는 2가지 방법
- 데이터베이스/오라클
- 2023. 1. 15.
오라클에서 그룹별 최댓값을 구하기 위해서는 집계함수(GROUP BY 절)를 사용하는 방법과, 분석함수(OVER 절)를 사용하는 방법을 주로 사용한다. 조회하는 상황에 따라서 필요한 형태의 방법을 사용하면 된다. GROUP BY 절은 기본적인 문법이라서 많이 알고 있지만 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 절과 다르게 원본 데이터를 그대로 표시하면서, 조회된 데이터 내에서 최고 급여를 찾아서 자신의 행에 표시할 수 있다. 첫 번째 예제와 비교하면서 보면 차이를 확인할 수 있을 것이다.