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

MySQL에서 IF 조건을 활용한 SUM 합계 쿼리 사용 방법

MySQL에서 SUM()은 대표적인 집계 함수(Aggregate Function) 중 하나로, 특정 열의 값들을 모두 더한 합계를 구할 때 사용합니다. 이 SUM() 함수는 IF() 조건문과 함께 활용하면 훨씬 더 유연하게 데이터를 집계할 수 있습니다. 예를 들어, 특정 조건을 만족하는 행만 골라서 합계를 구하거나, 조건별로 서로 다른 값을 더하는 것이 가능합니다.

이번 글에서는 IF 조건이 포함된 SUM 쿼리를 실제 예제와 함께 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 IF 조건과 함께 SUM 쿼리를 연습해 볼 수 있도록 간단한 테이블을 생성하겠습니다. 결제 방식(ModeOfPayment)과 금액(Amount) 두 개의 컬럼으로 구성된 테이블입니다.

mysql> create table SumWithIfCondition
    -> (
    -> ModeOfPayment varchar(100)
    -> ,
    -> Amount int
    -> );
Query OK, 0 rows affected (1.60 sec)

2. 샘플 데이터 삽입하기

테이블 생성이 완료되면 INSERT 명령어를 사용해 몇 개의 레코드를 입력합니다. 오프라인(Offline)과 온라인(Online) 결제 건을 번갈아 넣어 보겠습니다.

mysql> insert into SumWithIfCondition values('Offline',10);
Query OK, 1 row affected (0.21 sec)

mysql> insert into SumWithIfCondition values('Online',100);
Query OK, 1 row affected (0.16 sec)

mysql> insert into SumWithIfCondition values('Offline',20);
Query OK, 1 row affected (0.13 sec)

mysql> insert into SumWithIfCondition values('Online',200);
Query OK, 1 row affected (0.16 sec)

mysql> insert into SumWithIfCondition values('Offline',30);
Query OK, 1 row affected (0.11 sec)

mysql> insert into SumWithIfCondition values('Online',300);
Query OK, 1 row affected (0.17 sec)

3. 전체 데이터 조회하기

SELECT 문을 사용해 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from SumWithIfCondition;

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

+---------------+--------+
| ModeOfPayment | Amount |
+---------------+--------+
| Offline       |     10 |
| Online        |    100 |
| Offline       |     20 |
| Online        |    200 |
| Offline       |     30 |
| Online        |    300 |
+---------------+--------+
6 rows in set (0.00 sec)

총 6개의 행이 저장되어 있으며, Offline 결제는 10, 20, 30원이고 Online 결제는 100, 200, 300원입니다.

4. IF 조건이 있는 SUM 쿼리 실행하기

이제 본격적으로 IF 조건과 함께 SUM 함수를 사용해 보겠습니다. IF() 함수는 IF(조건식, 참일 때 반환값, 거짓일 때 반환값) 형태로 작성하며, 조건을 만족하는 행만 합계에 반영됩니다.

Case 1 - 온라인(Online) 결제 합계 구하기

결제 방식이 'Online'인 경우에만 금액을 더하고, 그 외에는 0을 더하도록 조건을 설정합니다.

mysql> select sum(if(ModeOfPayment = 'Online',Amount,0)) as TotalAmount from SumWithIfCondition;

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

+-------------+
| TotalAmount |
+-------------+
|         600 |
+-------------+
1 row in set (0.00 sec)

Online 결제 금액인 100 + 200 + 300 = 600이 정상적으로 출력되었습니다.

Case 2 - 오프라인(Offline) 결제 합계 구하기

이번에는 결제 방식이 'Offline'인 경우만 합산하도록 조건을 변경합니다.

mysql> select sum(if(ModeOfPayment = 'Offline',Amount,0)) as TotalAmount from SumWithIfCondition;

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

+-------------+
| TotalAmount |
+-------------+
|          60 |
+-------------+
1 row in set (0.00 sec)

Offline 결제 금액인 10 + 20 + 30 = 60이 출력되었습니다.

정리

MySQL에서 IF 조건과 SUM 함수를 함께 사용하면 WHERE 절로 필터링하지 않고도 하나의 쿼리 안에서 조건별 합계를 손쉽게 구할 수 있습니다. 특히 여러 조건의 합계를 한 번에 비교해야 하는 통계성 쿼리나 리포트 작성 시 매우 유용하게 활용할 수 있으니, CASE WHEN 구문과 함께 익혀두면 좋습니다.