평균값 구하기
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 |