[MSSQL] 평균 구하는 3가지 방법 (AVG 함수)
SQL Server에서 평균값을 구하기 위해서는 AVG 함수를 사용하면 된다. AVG 함수를 사용하지 않고 SUM 함수와 COUNT 함수를 사용해도 동일한 평균값을 구할 수 있다. AVG 함수는 평균을 구할 칼럼의 값이 NULL인 경우 집계 대상에서 제외하는 특성이 있으니 이점을 유의하여 함수를 사용해야 한다.
목차 |
전체 평균 건수 구하기
평균 구하기
SELECT AVG(sal)
FROM emp
WHERE job = 'SALESMAN'
![]() |
직업(job)이 "SALESMAN"에 해당하는 직원의 평균 급여를 구한다.
( 평균 급여 = 직원 총 급여 합계 / 직원수 )
평균 구할 때 NULL이 있을 경우 주의 사항
SELECT AVG(comm) AS avg1
, AVG(ISNULL(comm, 0)) AS avg2
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
![]() |
AVG 함수는 평균을 구할 칼럼의 값이 NULL인 경우 집계에서 제외한다.
첫 번째(avg1) 평균 성과급(comm)은 NULL인 직원을 제외한 4명의 평균 성과급을 집계한다.
두 번째(avg1) 평균 성과급은 ISNULL 함수를 사용하여 성과급이 NULL인 경우 "0"으로 치환하여 모든 직원(7명)의 평균 성과급을 집계한다.
그룹별 평균 구하기 (GROUP BY 절)
그룹별 평균 구하기
SELECT job
, AVG(sal) AS avg_sal
FROM emp
GROUP BY job
![]() |
직원(job) 별 평균 급여를 집계한다.
그룹별 평균 구하기 2
SELECT job
, AVG(sal) AS avg1
, SUM(sal) / COUNT(*) AS avg2
FROM emp
GROUP BY job
![]() |
SUM 함수와 COUNT 함수를 사용하여 평균을 구한 값과 AVG 함수의 평균값은 동일하다.
분석함수를 사용하여 평균 구하기 (OVER 절)
조회된 전체 데이터에서 평균 구하기
SELECT empno
, ename
, job
, sal
, AVG(sal) OVER() AS avg_sal
FROM emp
WHERE job = 'SALESMAN'
![]() |
OVER 절을 사용하면 조회된 전체 데이터의 평균값을 각행에 표시할 수 있다.
조회된 전체 데이터에서 그룹별 평균 구하기
SELECT empno
, ename
, job
, sal
, AVG(sal) OVER(PARTITION BY job) AS avg_sal
FROM emp
WHERE job IN ('MANAGER', 'SALESMAN')
![]() |
OVER 절 내부에 PARTITION BY 절을 사용하면 조회된 전체 데이터에서 그룹별로 평균을 구하여 그룹별 행에 표시할 수 있다. PARTITION BY 절은 GROUP BY 절과 비슷한 개념이며 전체 데이터를 그룹으로 묶지 않고 집계된 값을 세부 데이터와 함께 사용할 수 있다.
[MSSQL] GROUP BY 절 사용법 (그룹별 집계)
SQL Server에서 GROUP BY 절은 특정 칼럼을 기준으로 집계 함수를 사용하여 건수(COUNT), 합계(SUM), 평균(AVG) 등 집 계성 데이터를 추출할 때 사용한다. GROUP BY 절에서 기준 칼럼을 여러 개 지정할 수 있으
gent.tistory.com