Database/SQL

오라클 그룹함수 SUM, AVG, MAX, MIN, COUNT의 사용 GROUP BY HAVING

리커니 2013. 5. 21.
반응형

 

오라클 그룹함수 SUM, AVG, MAX, MIN, COUNT의 사용 GROUP BY HAVING

 

 

* 많이 사용되는 그룹함수의 종류

 

 함수명 기능 
  SUM    합을 구한다. 
  AVG    평균을 구한다. 
  MAX    최댓값을 구한다. 
  MIN    최솟값을 구한다. 
  COUNT   행의수를 구한다.

 

보통 그룹함수는 그룹으로 묶어 위 함수와 같은 데이터를 조회 하고 자 할때 사용한다.

*사용법

 

 SELECT SUM(컬럼명)
           , AVG(컬럼명)
           , MAX(컬럼명)
           , MIN(컬럼명)
           , COUNT(컬럼명)
  FROM 테이블명
 WHERE 조건
 GROUP BY 그룹화할 컬럼
 HAVING 그룹에 대한 조건
 WHERE - GROUP BY - HAVING 의 순서

 

WHERE은 그룹화 하기 전에 조건이라고 생각하면 되고 HAVING은 그룹화 후의 조건이라고 생각하면 된다.

그래서 HAVING은 그룹화 한 데이터에 대한 조건만이 가능하고 WHERE은 그룹화 하지 않은 조건만 가능하다.

 

*예제1

다음과 같은 AMT_MST_TEST 테이블이 존재 한다고 할때 그룹화 하여 원하는 데이터를 조회 하여보자.

 

SELECT GEN_DIV
     , SUM(SALARY)
     , AVG(SALARY)
     , MAX(SALARY)
     , MIN(SALARY)
     , COUNT(*)
  FROM AMT_MST_TEST
 GROUP BY GEN_DIV

 

위의 SELECT문은 성별로 그룹화 하여 남녀 연봉의 합, 평균, 최댓값, 최솟값, 그리고 남녀의 수를 구하는 예제이다.

*결과1

 

 

*예제2

예제1에 WHERE 조건을 주어 올해(2013)입사한 사람들만 조회하여 보자.

 

SELECT GEN_DIV
     , SUM(SALARY)
     , AVG(SALARY)
     , MAX(SALARY)
     , MIN(SALARY)
     , COUNT(*)
  FROM AMT_MST_TEST
 WHERE SUBSTR(JOIN_DT, 1, 4) = TO_CHAR(SYSDATE, 'YYYY')  -- 그룹화 하지 않은 조건만이 가능.  
 GROUP BY GEN_DIV

 

SUBSTR, TO_CHAR에 대한설명은 추후에 하기로 한다.

*결과2

 

2013년도에 입사한 여직원 1명에 대한 데이터가 조회되는 것을 볼 수 있다. (AMT_MST_TEST 테이블 참조)

 

*예제3

예제1에 평균 연봉이 20,000,000원 이상인 것만 조회한다.

 

SELECT GEN_DIV
     , SUM(SALARY)
     , AVG(SALARY)
     , MAX(SALARY)
     , MIN(SALARY)
     , COUNT(*)
  FROM AMT_MST_TEST  
 GROUP BY GEN_DIV
 HAVING AVG(SALARY) > 20000000  -- 그룹화 한 조건만 가능.

 

*결과2

 

예제1의 결과값에서 평균연봉(AVG(SALARY))가 2000만원 이상인 데이터만 조회가 된 것을 볼 수 있다.

반응형

댓글

💲 추천 글