Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 중복된 VARCHAR 값을 기준으로 평균(AVG) 구하는 방법

MySQL에서는 GROUP BY 절과 AVG() 함수를 함께 사용하면, 특정 VARCHAR(문자열) 값이 중복되는 경우 해당 값별로 숫자 컬럼의 평균을 손쉽게 계산할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable(
   Value int,
   Value2 varchar(100)
);
Query OK, 0 rows affected (0.84 sec)

2. 데이터 삽입하기

INSERT 명령으로 몇 개의 레코드를 추가합니다. 이때 '999.999.999.999' 값은 두 번 삽입되어 의도적으로 중복되도록 합니다.

mysql> insert into DemoTable values(10,'999.999.999.999');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(20,'888.888.888.888');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(30,'999.999.999.999');
Query OK, 1 row affected (0.09 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블에 저장된 모든 데이터를 조회합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-------+-----------------+
| Value | Value2 |
+-------+-----------------+
| 10 | 999.999.999.999 |
| 20 | 888.888.888.888 |
| 30 | 999.999.999.999 |
+-------+-----------------+
3 rows in set (0.00 sec)

4. VARCHAR 값 기준으로 평균 구하기

VARCHAR 컬럼(Value2)을 기준으로 그룹화하여 숫자 컬럼(Value)의 평균을 구하는 쿼리는 다음과 같습니다.

mysql> select Value2,avg(Value) from DemoTable group by Value2;

결과는 다음과 같이 출력됩니다.

+-----------------+------------+
| Value2 | avg(Value) |
+-----------------+------------+
| 999.999.999.999 | 20.0000 |
| 888.888.888.888 | 20.0000 |
+-----------------+------------+
2 rows in set (0.06 sec)

결과 해석

'999.999.999.999' 값은 두 개의 레코드(10과 30)에 해당하므로 평균은 (10 + 30) / 2 = 20이 됩니다. '888.888.888.888'은 하나의 레코드(20)만 있으므로 평균 역시 20입니다.

이처럼 GROUP BY 절에 기준이 되는 VARCHAR 컬럼을 지정하고 AVG() 함수를 사용하면, 중복된 문자열 값별로 수치 데이터의 평균을 간단하게 집계할 수 있습니다.