-
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';