ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 집계함수
    카테고리 없음 2022. 11. 7. 13:27
    728x90

    집계 함수 (Aggregate Funtion)

    테이블의 하나 이상의 칼럼을 그룹으로 묶어 계산 결과를 출력하는 함수를 뜻합니다. 

    집계함수는 NULL값이 있는 칼럼은 조회에 포함시키지 않는다. 

    데이터(행)가 없는 테이블에 그룹함수 COUNT( )를 사용시 0 이 출력되며 다른 집게 함수는 NULL 값이 출력됩니다. 

    COUNT( 카운트), MAX(최대)와 MIN(최소) 함수는 문자, 숫자, 날짜 데이터 형에서 사용할 수 있으나, 

    AVG(평균), SUM(합계), VARIANCE(분산), STDDEV(표준편차) 등은 NUMBER 형에서만 사용할 수 있습니다. 

    단순 컬럼과 집계 함수는 같이 사용할 수 없습니다.  단, GROUP BY의 기준이 된 컬럼은 사용 가능합니다 .

    GROUP BY절을 이용하여 그룹화하거나, HAVING 절을 이용하여 그룹에 대한 조건 비교를 할 수 있습니다. 

     

    예1) 회사의 전체 사원수와 보너 받는 사원의 수를 구하시오.

    보너스를 받는 사원은 수수료 commission_pct에 값이 있다. 

     SELECT COUNT(*)  AS "전체 사원수",

                    COUNT(COMMISSION_PCT) AS "보너스 받는 사원수"

    FROM EMPLOYESS;

    -- COUNT(칼럼)은 NULL 값은 제외한 행의 수를 계산

    예2) 월급을 제일 많이 받는 금액과 제일 적은 금액, 합계와 평균을 구한 예입니다. 

    SELECT MAX(SALARY), MIN(SALARY), SUM(SALARY), AVG(SALARY)

    FROM EMPLOYEES;

    예3) 영업부 (DPARTMENT_ID=80)에서 영업부 매니(JOB_ID=SA_MAN)의 평균 월급을 계산한 예입니다.

    아래의 계산식을 보면 영업부 매니저에 대한 AVG(SALARY)로 평균 월급을 계산하였고,

    합계를 영업부 인원( SUM(SALARY) / COUNT(DEPARTMENT_ID)으로 나누었습니다 

    평균이니까 합께를 인원수로 나눈 것이 맞기 때문에 아래의 결과를 보면 두 값이 같게 나옵니다. 

    SElECT AVG(SALARY), SUM(SALARY) / COUNT(DEPARTMENT_ID) AS 영업부매니저평균임금, COUNT(DEPARTMENT_ID) AS 사원수

    FROM EMPLOYEES WHERE JOB_ID = 'SA_MAN';

     

     

Designed by Tistory.