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

MySQL SUM()과 GROUP BY로 동일 고객별 제품 가격 합산하기

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 절을 사용해 집계 결과 자체에 조건을 걸 수도 있습니다.