[Oracle] 오라클 최대값, 최소값 구하기 (MAX, MIN)

오라클에서 최댓값과 최솟값을 구하기 위해서는 집계 함수 MAX(최대값), MIN(최소값)를 사용하면 된다. 집계 함수는 주로 GROUP BY 절과 함께 많이 사용하며, SELECT 절에 집계 함수만 있다면 GROUP BY 절이 없어도 사용이 가능하다. 집계함수(MAX, MIN)는 WHERE 절에 직접 사용은 할 수 없으며, 서브 쿼리와 같은 방법을 사용해야 한다.

 

최대값(MAX), 최소값(MIN)

 

최대값(MAX) 구하기

SELECT MAX(sal)
  FROM emp

 

 

위의 예제는 사원 테이블 전체에서 최고 급여를 조회한 결과이다.

 

SELECT job
     , MAX(sal)
  FROM emp
 GROUP BY job

 

 

위의 예제는 직군별 최고 급여를 조회한 결과이다. 

GROUP BY 절을 사용하여 직군(job) 별로 급여(sal)의 최대값(MAX)을 집계하였다.

 

최소값(MIN) 구하기

SELECT MIN(sal)
  FROM emp

 

 

위의 예제는 사원 테이블 전체에서 최저 급여를 조회한 결과이다.

 

SELECT job
     , MIN(sal)
  FROM emp
 GROUP BY job

 

 

위의 예제는 직군별 최저 급여를 조회한 결과이다. 

 

서브 쿼리에서 활용 (MAX, MIN)

SELECT a.ename
     , a.job
     , a.sal
  FROM emp a
 WHERE a.sal = (SELECT MAX(sal)
                  FROM emp
               )

 


 

위의 예제는 최고 급여를 받는 직원을 조회한 결과이다.

MAX, MIN 함수는 서브 쿼리에서도 많이 활용된다.

 

SELECT a.ename
     , a.job
     , a.sal
     , (SELECT MAX(aa.sal) 
          FROM emp aa 
         WHERE aa.job = a.job) AS job_max_sal
     , (SELECT MIN(aa.sal) 
          FROM emp aa 
         WHERE aa.job = a.job) AS job_min_sal
  FROM emp a
 WHERE a.job IN ('MANAGER', 'SALESMAN')

 


 

SELECT 절에서 서브쿼리를 사용하여 최대값, 최소값을 조회하는 예제이다.

조인을 하지 않고 추가로 값을 표시할 때 많이 사용한다.

 

PARTITION BY 절 활용 (MAX, MIN)

SELECT a.ename
     , a.job
     , a.sal
     , MAX(a.sal) OVER (PARTITION BY a.job)
  FROM emp a
 WHERE a.job IN ('MANAGER', 'SALESMAN')

 

 

위의 예제는 조회된 결과 중 직군별로 최고 급여를 집계하여 표시한 결과이다.

서브 쿼리를 활용하여 최대값을 표시한 결과와 비슷하지만, PARTITION BY 절을 사용하면 조회된 결과에서 최대값을 집계하여 표시하므로 약간의 차이가 발생할 수 있다.

 

SELECT a.ename
     , a.job
     , a.sal
     , MAX(a.sal) OVER ()
  FROM emp a
 WHERE job IN ('MANAGER', 'SALESMAN')

 

 

위의 예제는 조회된 결과의 급여 중 최고 급여를 표시한 결과이다.

PARTITION BY 절은 GROUP BY 절과 비슷한 역활을 하며, PARTITION BY 절을 생략하여 그룹을 정하지 않았기 때문에 조회된 결과 전체에서 최대값을 집계한다.

 

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

 

 

[Oracle] 오라클 GREATEST, LEAST 함수 사용법 및 주의사항

오라클에서 GREATEST 함수는 최대값, LEAST 함수는 최소값을 반환하는 함수이다. MAX, MIN 함수와 차이점은 서로다른 컬럼의 값을 비교한다는 것이다. 같은 행(Row)에서 서로다른 컬럼의 값을 비교하여

gent.tistory.com

 

[Oracle] 오라클 GROUP BY, HAVING 절 사용법 (WHERE, 조건절)

오라클 SQL에서 GROUP BY 절을 사용하여 그룹별 건수나 합계를 얻을 수 있다. 그룹별 집계된 결과 중 원하는 조건의 결과만 필터링하기 위해서는 HAVING 절을 사용하여 필터 조건을

gent.tistory.com

 

 

댓글

Designed by JB FACTORY