반응형
오라클 그룹함수 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만원 이상인 데이터만 조회가 된 것을 볼 수 있다.
반응형
'Database > SQL' 카테고리의 다른 글
Subquery 서브쿼리사용법, ALL, ANY, IN, EXISTS (3) | 2013.05.23 |
---|---|
Oracle OUTER JOIN (RIGHT JOIN, LEFT JOIN) 비교 아우터조인 (0) | 2013.05.21 |
오라클 DELETE문 데이터 삭제 (0) | 2013.05.21 |
오라클 UPDATE문 데이터 수정 (0) | 2013.05.21 |
오라클 INSERT문 데이터 생성 (0) | 2013.05.21 |
댓글