MSSQL 평균값 구하기 AVG

평균값 구하기

MSSQL에서 평균값 구하는 방법에 대해 포스팅하겠습니다
전체데이터중 평균값을 알고 싶을 수 도 있고
특정구분값을 기준으로 평균값을 알고 싶을 수 있습니다
이럴 때 기본내장함수인 AVG함수를 이용하여 평균값을 구할 수 있습니다

AVG함수 기본문법

SELECT AVG(COLUMN1)
  FROM TABLE
/*
    TABLE내 COLUMN1 값들의 평균값을 조회합니다.
*/

SELECT COLUMN1
     , AVG(COLUMN2)
  FROM TABLE
 GROUP BY COLUMN1
/*
    TABLE내에서 COLUMN1별로 COLUMN2 값들의 평균값을 조회합니다
*/

AVG는 그룹함수 이기 때문에 GROUP BY 되지 않은 칼럼과는 함께 조회될 수 없습니다

💡그룹함수: 그룹별로 데이터를 조회하는 데 사용되는 함수 MAX(최대값), MIN(최소값) 등이 있습니다
GROUP BY로 GROUP을 지정해 주되 지정하지 않은 경우 전체데이터를 그룹으로 조회합니다
💡 AVG함수는 NULL데이터를 무시하고 계산합니다. NULL데이터를 무시하고 싶지 않다면 ISNULL이나
COALESCE 함수를 사용하여 데이터를 치환하여야 합니다.

 

예시

실생활에 쓰이는 예제로 학교에서 반별로 평균성적을 구하는 내용을 작성해 보겠습니다

예시용 테이블

NAME GRADE_SCORE  CLASS
 홍길동  93  1
 강감찬  85  2
 대조영  79  3
 이방언  85  2
 해모수  90  1
 이성계  NULL  3
테이블명: STUDENT_SCORE
[칼럼정보]
NAME: 이름
GRADE_SCORE: 성적
CLASS: 반

전체학생 중 평균성적 구하기 (NULL 미처리)

SELECT AVG(GRADE_SCORE) AS AVG_GRADE_SCORE
  FROM STUDENT_SCORE
/*
    STUDENT_SCORE테이블내 모든 데이터중
    GRADE_SCORE칼럼값들의 평균을 출력합니다.
*/

🎉결과🎉

AVG_GRADE_SCORE 참고
86.4 (93 + 85 + 79 + 85 + 90) / 5

GRADE_SCORE가 NULL인 '이성계'의 데이터는 제외되었습니다.


전체학생 중 평균성적 구하기 (NULL 처리)

SELECT AVG(ISNULL(GRADE_SCORE, 0)) AS AVG_GRADE_SCORE
  FROM STUDENT_SCORE

🎉결과🎉

AVG_GRADE_SCORE 참고
72 (93 + 85 + 79 + 85 + 90 + 0) / 6

ISNULL 함수에 의해 NULL이었던 '이성계'의 데이터는 0으로 계산되었습니다.


학급별로 평균성적 구하기

SELECT CLASS
     , AVG(ISNULL(GRADE_SCORE, 0)) AS AVG_GRADE_SCORE
  FROM STUDENT_SCORE
/*
    STUDENT_SCORE테이블내에서 CLASS별로
    GRADE_SCORE칼럼값들의 평균을 출력합니다.
*/

🎉결과🎉

CLASS AVG_GRADE_SCORE 참고
1 91.5 (93 + 91) / 2
2 85 (85 + 85) / 2
3 39.5 (79 + 0) / 2