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

MySQL CASE 문으로 조건에 따른 수학 연산 수행하기

MySQL에서 조건을 판단하면서 동시에 수학 연산을 처리해야 하는 경우가 있습니다. 이럴 때 CASE 문을 활용하면 IF와 유사한 조건 분기 로직을 손쉽게 구현할 수 있으며, ELSE 절에서도 다양한 연산이 가능합니다.

예제 테이블 생성하기

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FruitName varchar(100),
    FruitPrice int
    );
Query OK, 0 rows affected (0.26 sec)

샘플 데이터 삽입하기

INSERT 명령을 사용해 과일 이름과 가격 데이터를 입력합니다.

mysql> insert into DemoTable(FruitName,FruitPrice) values('Orange',250);
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable(FruitName,FruitPrice) values('Banana',100);
Query OK, 1 row affected (0.05 sec)

mysql> insert into DemoTable(FruitName,FruitPrice) values('Apple',150);
Query OK, 1 row affected (0.05 sec)

mysql> insert into DemoTable(FruitName,FruitPrice) values('Pomegranate',200);
Query OK, 1 row affected (0.10 sec)

저장된 데이터 확인하기

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+----+-------------+------------+
| Id | FruitName   | FruitPrice |
+----+-------------+------------+
|  1 | Orange      |        250 |
|  2 | Banana      |        100 |
|  3 | Apple       |        150 |
|  4 | Pomegranate |        200 |
+----+-------------+------------+
4 rows in set (0.19 sec)

CASE 문으로 조건부 수학 연산 적용하기

이제 CASE 문을 사용해 특정 조건일 때만 나눗셈 연산을 수행하고, 그 외의 경우에는 원래 값을 그대로 반환하는 쿼리를 작성해 보겠습니다. 아래 예제에서는 과일 이름이 'Orange'인 경우 가격을 5로 나누고, 나머지 과일은 기존 가격을 그대로 출력합니다.

mysql> select Id,FruitName,FruitPrice,
    case
    when FruitName='Orange'
    then FruitPrice/5
    else FruitPrice
    end as OriginalPrice
    from DemoTable;

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

+----+-------------+------------+---------------+
| Id | FruitName   | FruitPrice | OriginalPrice |
+----+-------------+------------+---------------+
|  1 | Orange      |        250 |       50.0000 |
|  2 | Banana      |        100 |           100 |
|  3 | Apple       |        150 |           150 |
|  4 | Pomegranate |        200 |           200 |
+----+-------------+------------+---------------+
4 rows in set (0.00 sec)

결과 해석

위 출력 결과를 보면 'Orange' 행의 경우 WHEN 조건이 참이 되어 FruitPrice/5, 즉 250 ÷ 5 = 50이라는 계산 결과가 반환된 것을 확인할 수 있습니다. 반면 'Banana', 'Apple', 'Pomegranate'는 조건에 해당하지 않아 ELSE 절이 실행되며 원래 가격인 100, 150, 200이 그대로 출력됩니다.

이처럼 MySQL의 CASE 문은 THEN과 ELSE 절 모두에서 산술 연산을 자유롭게 사용할 수 있어, 단순한 값 비교를 넘어 조건 기반의 복잡한 계산 로직도 SQL 안에서 깔끔하게 처리할 수 있다는 장점이 있습니다.