[MSSQL] 평균 구하는 3가지 방법 (AVG 함수)

SQL Server에서 평균값을 구하기 위해서는 AVG 함수를 사용하면 된다. AVG 함수를 사용하지 않고  SUM 함수와 COUNT 함수를 사용해도 동일한 평균값을 구할 수 있다. AVG 함수는 평균을 구할 칼럼의 값이 NULL인 경우 집계 대상에서 제외하는 특성이 있으니 이점을 유의하여 함수를 사용해야 한다.

 

MSSQL 평균 구하기

목차
  1. 전체 평균 건수 구하기
  2. 그룹별 평균 구하기 (GROUP BY 절)
  3. 분석함수를 사용하여 평균 구하기 (OVER 절)

 

전체 평균 건수 구하기

평균 구하기

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 절과 비슷한 개념이며 전체 데이터를 그룹으로 묶지 않고 집계된 값을 세부 데이터와 함께 사용할 수 있다.

예제쿼리(테이블포함).txt
0.00MB

 

 

[MSSQL] GROUP BY 절 사용법 (그룹별 집계)

SQL Server에서 GROUP BY 절은 특정 칼럼을 기준으로 집계 함수를 사용하여 건수(COUNT), 합계(SUM), 평균(AVG) 등 집 계성 데이터를 추출할 때 사용한다. GROUP BY 절에서 기준 칼럼을 여러 개 지정할 수 있으

gent.tistory.com

 

댓글

Designed by JB FACTORY