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

MySQL에서 중복된 제품 ID별 평균 가격(제품 가격 평균) 구하기

개요

중복된 제품 ID(ProductId)가 존재할 때, 각 제품 ID별로 해당 레코드들의 평균 가격을 구하려면 MySQL의 AVG() 함수와 GROUP BY 절을 함께 사용하면 됩니다. AVG()는 지정한 컬럼 값들의 산술 평균을 계산하고, GROUP BY는 중복된 값을 기준으로 레코드를 그룹화해 줍니다.

아래에서 예제 테이블 생성부터 데이터 삽입, 그리고 평균 조회까지 단계별로 살펴보겠습니다.

1. 테이블 생성

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

mysql> create table DemoTable1490
-> (
-> ProductId varchar(20),
-> ProductPrice int
-> );
Query OK, 0 rows affected (0.43 sec)

2. 데이터 삽입

INSERT 명령어를 사용해 일부러 중복되는 제품 ID를 포함한 레코드들을 삽입합니다.

mysql> insert into DemoTable1490 values('PRODUCT_100',700);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1490 values('PRODUCT_200',500);
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable1490 values('PRODUCT_200',1000);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1490 values('PRODUCT_100',1300);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1490 values('PRODUCT_200',300);
Query OK, 1 row affected (0.14 sec)

3. 전체 레코드 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1490;

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

+-------------+--------------+
| ProductId | ProductPrice |
+-------------+--------------+
| PRODUCT_100 | 700 |
| PRODUCT_200 | 500 |
| PRODUCT_200 | 1000 |
| PRODUCT_100 | 1300 |
| PRODUCT_200 | 300 |
+-------------+--------------+
5 rows in set (0.00 sec)

4. 제품 ID별 평균 가격 조회

이제 AVG() 함수와 GROUP BY 절을 사용하여 각 제품 ID별 평균 가격을 구하는 쿼리는 다음과 같습니다.

mysql> select ProductId, avg(ProductPrice) from DemoTable1490
-> group by ProductId;

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

+-------------+-------------------+
| ProductId | avg(ProductPrice) |
+-------------+-------------------+
| PRODUCT_100 | 1000.0000 |
| PRODUCT_200 | 600.0000 |
+-------------+-------------------+
2 rows in set (0.03 sec)

결과 해석

  • PRODUCT_100: (700 + 1300) / 2 = 1000.0000
  • PRODUCT_200: (500 + 1000 + 300) / 3 = 600.0000

이처럼 GROUP BY로 중복된 제품 ID를 기준으로 그룹화한 뒤 AVG() 함수를 적용하면, 각 그룹(제품 ID)별 평균 가격을 손쉽게 계산할 수 있습니다. 참고로 소수점 자릿수를 조정하고 싶다면 ROUND(AVG(ProductPrice), 2)처럼 ROUND() 함수를 함께 사용하면 됩니다.