MySQL에서 동일 고객의 제품 가격을 합산하는 방법
여러 개의 가격 열(Product_1_Price, Product_2_Price)이 있고, 같은 고객명(CustomerName)이 여러 번 등록되어 있을 때 각 고객별로 해당 열들의 합계를 구하고 싶다면 SUM() 함수와 GROUP BY 절을 함께 사용하면 됩니다.
아래에서 예제 테이블 생성부터 데이터 삽입, 그리고 최종 집계 쿼리까지 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 예제로 사용할 테이블을 만듭니다.
mysql> create table DemoTable
(
CustomerName varchar(100),
Product_1_Price int,
Product_2_Price int
);
Query OK, 0 rows affected (0.73 sec)2단계: 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다. 이때 'John'과 'David'는 각각 두 번씩 입력되어 있습니다.
mysql> insert into DemoTable values('John',67,89);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('David',769,890);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('David',987,1000);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('John',900,111);
Query OK, 1 row affected (0.12 sec)3단계: 전체 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+--------------+-----------------+-----------------+ | CustomerName | Product_1_Price | Product_2_Price | +--------------+-----------------+-----------------+ | John | 67 | 89 | | David | 769 | 890 | | David | 987 | 1000 | | John | 900 | 111 | +--------------+-----------------+-----------------+ 4 rows in set (0.00 sec)
4단계: 고객별 합계 구하기
이제 핵심인 집계 쿼리입니다. SUM()으로 각 가격 열의 합을 계산하고, GROUP BY CustomerName으로 고객별로 그룹화합니다. AS 키워드를 사용하면 결과 열에 별칭(Total1, Total2)을 지정할 수 있어 결과가 더 읽기 쉬워집니다.
mysql> select CustomerName,
SUM(Product_1_Price) AS Total1,
SUM(Product_2_Price) AS Total2
from DemoTable
group by CustomerName;실행 결과는 다음과 같습니다.
+--------------+--------+--------+ | CustomerName | Total1 | Total2 | +--------------+--------+--------+ | John | 967 | 200 | | David | 1756 | 1890 | +--------------+--------+--------+ 2 rows in set (0.00 sec)
결과 해석
- John: Product_1_Price 합계 = 67 + 900 = 967, Product_2_Price 합계 = 89 + 111 = 200
- David: Product_1_Price 합계 = 769 + 987 = 1756, Product_2_Price 합계 = 890 + 1000 = 1890
이처럼 SUM()과 GROUP BY를 조합하면 중복된 고객 데이터를 하나로 묶어 각 열의 합계를 손쉽게 계산할 수 있습니다. 참고로 특정 조건이 필요하다면 WHERE 절로 필터링하거나, HAVING 절을 사용해 집계 결과 자체에 조건을 걸 수도 있습니다.