MySQL에서 하나의 행(row)에 있는 여러 컬럼 값의 평균을 구하려면 해당 컬럼들을 모두 더한 뒤 컬럼 수로 나누면 됩니다. 참고로 AVG() 함수는 열(세로) 방향의 평균을 구하는 집계 함수이므로, 행(가로) 방향의 평균은 산술 연산자를 사용해 직접 계산해야 합니다.
기본 문법
행의 값 평균을 계산하는 기본 문법은 다음과 같습니다.
SELECT (yourTableName.yourColumnName1 + yourTableName.yourColumnName2 + yourTableName.yourColumnName3 + ... + yourTableName.yourColumnNameN) / numberOfColumns AS anyAliasName FROM yourTableName;
예제 테이블 생성
문법을 이해하기 위해 먼저 예제로 사용할 테이블을 만들어 보겠습니다.
mysql> create table calculateAverageDemo
-> (
-> x int,
-> y int,
-> z int
-> );
Query OK, 0 rows affected (1.41 sec)
데이터 삽입
INSERT 명령어를 사용해 테이블에 레코드를 몇 개 삽입합니다.
mysql> insert into calculateAverageDemo values(10,20,30);
Query OK, 1 row affected (0.78 sec)
mysql> insert into calculateAverageDemo values(40,50,70);
Query OK, 1 row affected (0.26 sec)
mysql> insert into calculateAverageDemo values(80,90,220);
Query OK, 1 row affected (0.43 sec)
저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from calculateAverageDemo;
실행 결과는 다음과 같습니다.
+------+------+------+
| x | y | z |
+------+------+------+
| 10 | 20 | 30 |
| 40 | 50 | 70 |
| 80 | 90 | 220 |
+------+------+------+
3 rows in set (0.00 sec)
행 평균 계산 쿼리 실행
이제 각 행의 값 평균을 계산하는 쿼리입니다. x, y, z 세 컬럼의 합을 3으로 나누고, 결과를 알아보기 쉽게 별칭(Alias) 'Average'로 지정했습니다.
mysql> select (calculateAverageDemo.x + calculateAverageDemo.y + calculateAverageDemo.z) / 3
-> AS Average from calculateAverageDemo;
실행 결과는 다음과 같습니다.
+----------+
| Average |
+----------+
| 20.0000 |
| 53.3333 |
| 130.0000 |
+----------+
3 rows in set (0.06 sec)
결과를 살펴보면 첫 번째 행은 (10+20+30)/3 = 20, 두 번째 행은 (40+50+70)/3 ≈ 53.3333, 세 번째 행은 (80+90+220)/3 = 130으로, 각 행별 평균값이 정상적으로 계산된 것을 확인할 수 있습니다.
참고: NULL 값 처리
행 평균 계산 시 주의할 점은, 대상 컬럼 중 하나라도 NULL이 포함되면 전체 결과가 NULL이 된다는 것입니다. 이 경우 IFNULL() 또는 COALESCE() 함수를 함께 사용하면 NULL을 0 등의 기본값으로 치환하여 안정적으로 평균을 계산할 수 있습니다.