MySQL에서 집계 함수를 활용해 열 값 평균 계산하기
데이터베이스를 다루다 보면 특정 열(column)에 저장된 숫자 값들의 평균을 구해야 하는 경우가 자주 발생합니다. 이번 글에서는 MySQL의 집계 함수(aggregate function)를 활용하여 열 값의 평균을 계산하는 방법을 테이블 생성부터 결과 확인까지 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable ( Number int ); Query OK, 0 rows affected (0.79 sec)
2. 데이터 삽입하기
INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable values(56); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(78); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(89); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(98); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(91); Query OK, 1 row affected (0.35 sec) mysql> insert into DemoTable values(96); Query OK, 1 row affected (0.15 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블에 저장된 전체 레코드를 조회합니다.
mysql> select *from DemoTable;
실행하면 다음과 같은 결과가 출력됩니다.
+--------+ | Number | +--------+ | 56 | | 78 | | 89 | | 98 | | 91 | | 96 | +--------+ 6 rows in set (0.00 sec)
4. 집계 함수로 평균 구하기
다음은 SUM() 집계 함수를 활용해 열 값의 평균을 계산하는 쿼리입니다. 합계에 가중치 비율을 곱하고 분모로 나누는 형태로 작성되었습니다.
mysql> select (sum(Number)*(100))/(100+500) from DemoTable;
실행 결과는 다음과 같습니다.
+-------------------------------+ | (sum(Number)*(100))/(100+500) | +-------------------------------+ | 84.6667 | +-------------------------------+ 1 row in set (0.00 sec)
참고: AVG() 함수로 간단하게 평균 구하기
단순 산술 평균만 필요하다면 MySQL에서 기본 제공하는 AVG() 집계 함수를 사용하는 것이 더 간편합니다.
mysql> select avg(Number) from DemoTable;
위 쿼리는 6개 값(56, 78, 89, 98, 91, 96)의 평균인 84.6667을 반환합니다. 상황에 따라 SUM()을 응용한 가중 평균과 AVG()를 적절히 선택해 사용하면 됩니다.