MySQL AVG() 함수로 평균값 계산하기
MySQL에서 테이블의 각 컬럼에 대한 평균값을 계산하려면 내장 집계 함수인 AVG()를 사용하면 됩니다. AVG() 함수는 지정한 컬럼의 모든 행 값을 합산한 뒤, NULL이 아닌 값의 개수로 나누어 평균을 반환합니다.
기본 문법
SELECT avg(컬럼명1) AS 별칭1,
avg(컬럼명2) AS 별칭2,
avg(컬럼명3) AS 별칭3
FROM 테이블명;
AS 키워드를 사용해 별칭(alias)을 지정하면 결과 집합의 컬럼 이름을 원하는 대로 표시할 수 있어 가독성이 좋아집니다.
예제 테이블 생성하기
먼저 실습용 테이블을 만들어 보겠습니다. 세 개의 정수형(int) 컬럼을 가진 demo31 테이블입니다.
mysql> create table demo31
-> (
-> value1 int,
-> value2 int,
-> value3 int
-> );
Query OK, 0 rows affected (2.27 sec)
데이터 삽입하기
INSERT 명령문으로 몇 개의 레코드를 추가합니다.
mysql> insert into demo31 values(34,55,67);
Query OK, 1 row affected (0.27 sec)
mysql> insert into demo31 values(50,60,70);
Query OK, 1 row affected (0.16 sec)
mysql> insert into demo31 values(100,200,300);
Query OK, 1 row affected (0.14 sec)
mysql> insert into demo31 values(10,300,200);
Query OK, 1 row affected (0.15 sec)
저장된 데이터 확인하기
SELECT 문으로 테이블에 저장된 전체 레코드를 조회합니다.
mysql> select *from demo31;
실행 결과는 다음과 같습니다.
+--------+--------+--------+
| value1 | value2 | value3 |
+--------+--------+--------+
| 34 | 55 | 67 |
| 50 | 60 | 70 |
| 100 | 200 | 300 |
| 10 | 300 | 200 |
+--------+--------+--------+
4 rows in set (0.00 sec)
행 전체 평균값 계산 쿼리
이제 각 컬럼의 평균값을 한 번의 쿼리로 계산해 보겠습니다.
mysql> select avg(value1) as Value1_AVG,
-> avg(value2) as Value2_AVG,
-> avg(value3) as Value3_AVG
-> from demo31;
위 쿼리는 다음과 같은 결과를 출력합니다.
+------------+------------+------------+
| Value1_AVG | Value2_AVG | Value3_AVG |
+------------+------------+------------+
| 48.5000 | 153.7500 | 159.2500 |
+------------+------------+------------+
1 row in set (0.00 sec)
결과 해석
- value1 평균: (34 + 50 + 100 + 10) ÷ 4 = 48.5000
- value2 평균: (55 + 60 + 200 + 300) ÷ 4 = 153.7500
- value3 평균: (67 + 70 + 300 + 200) ÷ 4 = 159.2500
AVG() 함수는 소수점 이하 자릿수까지 정확한 평균값을 반환하며, 컬럼에 NULL 값이 포함되어 있으면 해당 행은 자동으로 계산에서 제외됩니다. 여러 컬럼의 평균을 동시에 구할 때는 위 예제처럼 AVG()를 여러 번 사용하고 각각 별칭을 붙여주면 깔끔하게 결과를 확인할 수 있습니다.