그룹 함수

DB 2009. 6. 2. 13:47

단일 행 함수와는 달리 그룹 함수는 여러 행 또는 테이블 전체에 대해 함수가 적용되어 하나의 결과를 가져오는 함수를 말한다.

그룹 당 하나의 결과가 주어지도록 행의 집합에 대해 연산할 경우 GROUP BY 절을 이용하여 그룹화 할 수 있고 HAVING을 이용하여 그룹에 대한 조건을 제한할 수 있다.

<그룹함수의 종류>

 AVG(DISTINCT|ALL|n) : NULL값을 제외한 n개 행의 평균값.

 COUNT(DISTINCT|ALL|*) : NULL값을 포함한 행의 개수.

 MAX(DISTINCT|ALL|expr) : 최대값.

 MIN(DISTINCT|ALL|expr) : 최소값.

 STDDEV(DISTINCT|ALL|n) : NULL값을 제외한 n의 표준 편차.

 SUM(DISTINCT|ALL|n) : NULL값을 제외한 n의 합계.

 VARIANCE(DISTINCT|ALL|n) : NULL값을 제외한 n의 분산.

 * DISTINCT는 해당 함수로 하여금 오직 중복되지 않는 값만 리턴하게 해준다.

   그러나 ALL(Default)은 해당 함수로 하여금 모든 값을 고려하게 한다.

 * expr이 있는 인수들의 자료 형태는 CHAR, VARCHAR2, NUMBER, DATE형이 될 수 있다.

 * COUNT(*)를 제외한 모든 그룹 함수들은 NULL값을 무시한다.

   NULL값을 하나의 값으로 치환하기 위해서는 NVL함수를 사용하면 된다.

 * 모든 자료형에 대하여 MAX와 MIN을 사용할 수 있다.

   그러나 AVG, SUM, VARIANCE, STDDEV는 NUMBER만 사용 가능하다.

 문제1> EMP 테이블에서 모든 SALESMAN에 대하여 급여의 평균, 최고액, 최저액, 합계를 출력하라.

   SELECT AVG(sal), MAX(sal), MIN(sal)
   FROM emp
   WHERE job LIKE 'SAL%'


   AVG(SAL)   MAX(SAL)   MIN(SAL)
   --------- ---------- ----------
           1400       1600       1250

 문제2> EMP 테이블에 등록되어 있는 인원수, 보너스에 NULL이 아닌 인원수, 보너스의 평균,

           등록되어 있는 부서의 수를 구하여 출력하라.

      SELECT COUNT(*), COUNT(comm), AVG(NVL(comm, 0)), COUNT(DISTINCT deptno)
      FROM emp


      COUNT(*) COUNT(COMM) AVG(NVL(COMM,0)) COUNT(DISTINCTDEPTNO)
       --------- ----------- ---------------- ---------------------
                  17           5       147.058824                     3

[출처] 그룹 함수|작성자 이경모


'DB' 카테고리의 다른 글

TO_CHAR 함수  (0) 2009.06.02
기타 함수  (0) 2009.06.02
GROUP BY  (0) 2009.06.02
Join  (0) 2009.06.02
Equijoin  (0) 2009.06.02
Posted by 으랏차
,