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

MySQL에서 조건에 따라 열 합계 구하기: SUM과 WHERE 절 활용 방법

MySQL 조건부 합계란?

데이터베이스 작업을 하다 보면 테이블 전체가 아닌 특정 조건을 만족하는 행만 대상으로 합계를 구해야 하는 경우가 자주 발생합니다. 예를 들어, 특정 국가의 고객들이 구매한 상품 금액의 총합을 알고 싶다면 SUM 함수에 WHERE 절을 함께 사용하면 됩니다.

이번 글에서는 실제 예제를 통해 MySQL에서 조건에 따라 열의 합계를 구하는 방법을 단계별로 살펴보겠습니다.

1. 샘플 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다. 고객 ID, 상품 금액, 고객 국가명 세 개의 컬럼으로 구성된 간단한 테이블입니다.

mysql> create table DemoTable
(
    CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ProductAmount int,
    CustomerCountryName varchar(10)
);
Query OK, 0 rows affected (0.86 sec)
  • CustomerId: 자동 증가(AUTO_INCREMENT)되는 기본키
  • ProductAmount: 상품 금액을 저장하는 정수형 컬럼
  • CustomerCountryName: 고객의 국가 코드(US, UK, AUS 등)를 저장

2. 데이터 삽입

INSERT 문을 사용해 여러 국가의 고객 데이터를 입력합니다.

mysql> insert into DemoTable(ProductAmount,CustomerCountryName) values(190,'US');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(ProductAmount,CustomerCountryName) values(200,'UK');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(ProductAmount,CustomerCountryName) values(1500,'AUS');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(ProductAmount,CustomerCountryName) values(2010,'US');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(ProductAmount,CustomerCountryName) values(7890,'UK');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(ProductAmount,CustomerCountryName) values(500,'US');
Query OK, 1 row affected (0.21 sec)

3. 저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 정상적으로 입력되었는지 확인합니다.

mysql> select *from DemoTable;

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

+------------+---------------+---------------------+
| CustomerId | ProductAmount | CustomerCountryName |
+------------+---------------+---------------------+
| 1 | 190 | US |
| 2 | 200 | UK |
| 3 | 1500 | AUS |
| 4 | 2010 | US |
| 5 | 7890 | UK |
| 6 | 500 | US |
+------------+---------------+---------------------+
6 rows in set (0.00 sec)

4. 조건에 따라 열 합계 구하기

이제 핵심인 조건부 합계 쿼리입니다. 국가가 'US'인 고객들의 상품 금액 합계를 구하려면 WHERE 절로 조건을 지정하고, SUM 함수로 해당 컬럼의 값을 더하면 됩니다. AS 키워드를 사용하면 결과 컬럼에 별칭을 붙여 가독성을 높일 수 있습니다.

mysql> select SUM(ProductAmount) AS Total_Amount from DemoTable where CustomerCountryName='US';

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

+--------------+
| Total_Amount |
+--------------+
| 2700 |
+--------------+
1 row in set (0.00 sec)

결과 분석

US 고객의 상품 금액은 190 + 2010 + 500 = 2700으로, WHERE 절이 'US'에 해당하는 행만 필터링한 뒤 SUM이 적용된 것을 확인할 수 있습니다.

추가 팁: GROUP BY로 국가별 합계 한 번에 구하기

여러 국가의 합계를 각각 구하고 싶다면 GROUP BY 절을 활용하면 편리합니다.

mysql> SELECT CustomerCountryName, SUM(ProductAmount) AS Total_Amount
    FROM DemoTable
    GROUP BY CustomerCountryName;

이 쿼리 하나로 US(2700), UK(8090), AUS(1500)처럼 국가별 합계를 동시에 얻을 수 있어, 조건이 여러 개일 때 유용하게 사용됩니다.

마무리

MySQL에서 조건에 따라 열의 합계를 구하는 방법은 매우 간단합니다. SUM 함수 + WHERE 절 조합만 기억하면 되며, 조건별 그룹 합계가 필요할 때는 GROUP BY를 함께 사용하면 됩니다. 이 두 가지 패턴만 익혀두면 실무에서 다양한 집계 쿼리를 손쉽게 작성할 수 있습니다.