MySQL에서 특정 열의 값에 따라 조건적으로 곱셈을 수행하고 싶다면 CASE 문을 활용하면 됩니다. CASE 문은 조건을 평가한 뒤, 조건이 참일 때와 거짓일 때 각각 다른 값을 반환할 수 있어 이러한 상황에 매우 유용합니다.
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value1 int, Value2 int ); Query OK, 0 rows affected (0.76 sec)
샘플 데이터 삽입하기
insert 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다. 여기서는 Value2가 0인 경우와 0보다 큰 경우를 모두 포함시켰습니다.
mysql> insert into DemoTable(Value1,Value2) values(10,5); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable(Value1,Value2) values(20,0); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable(Value1,Value2) values(40,10); Query OK, 1 row affected (0.28 sec) mysql> insert into DemoTable(Value1,Value2) values(50,0); Query OK, 1 row affected (0.12 sec)
테이블 전체 조회하기
select 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+--------+--------+ | Id | Value1 | Value2 | +----+--------+--------+ | 1 | 10 | 5 | | 2 | 20 | 0 | | 3 | 40 | 10 | | 4 | 50 | 0 | +----+--------+--------+ 4 rows in set (0.00 sec)
CASE 문으로 조건부 곱셈 수행하기
이제 열 값에 따라 SELECT 문에서 곱셈을 수행하는 핵심 쿼리입니다. 아래 쿼리는 Value2가 0보다 크면 Value1과 Value2를 곱하고, 그렇지 않으면 0을 반환합니다.
mysql> select Value1,Value2, case when Value2 > 0 then Value1*Value2 else 0 end as Multiplication from DemoTable;
실행 결과는 다음과 같습니다.
+--------+--------+----------------+ | Value1 | Value2 | Multiplication | +--------+--------+----------------+ | 10 | 5 | 50 | | 20 | 0 | 0 | | 40 | 10 | 400 | | 50 | 0 | 0 | +--------+--------+----------------+ 4 rows in set (0.00 sec)
결과 해석
출력 결과를 보면 Value2가 5나 10처럼 양수인 행은 두 값의 곱(50, 400)이 계산되어 반환된 반면, Value2가 0인 행은 곱셈 대신 0이 반환된 것을 확인할 수 있습니다.
이처럼 CASE 문을 사용하면 별도의 애플리케이션 로직 없이도 SQL 쿼리 내에서 조건에 따른 연산 처리를 손쉽게 구현할 수 있습니다. 필요에 따라 조건문 안에서 비교 연산자를 자유롭게 변경하여 다양한 비즈니스 규칙을 적용할 수 있다는 점도 기억해 두면 좋습니다.