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

WHEN 절을 활용한 MySQL CASE 문 구현 방법

MySQL에서 CASE 문과 WHEN 절을 함께 사용하면 하나의 쿼리 안에서 여러 조건을 평가하고, 조건에 따라 서로 다른 값을 반환할 수 있습니다. 이는 프로그래밍 언어의 if-else 문과 유사한 역할을 하며, 데이터를 조회하면서 동시에 조건별 분류나 상태 표시를 처리할 때 매우 유용합니다.

CASE WHEN 기본 문법

CASE 문은 WHEN 절로 조건을 나열하고, 해당 조건이 참일 때 THEN 뒤의 값을 반환합니다. 모든 조건에 해당하지 않으면 ELSE 절의 값이 반환됩니다.

SELECT *,
    CASE WHEN yourCondition THEN yourStatement
    WHEN yourCondition THEN yourStatement
    .
    .
ELSE yourStatement
FROM yourTableName;

예제 테이블 생성하기

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

mysql> CREATE TABLE DemoTable
   &;-> (
   &;-> StudentName varchar(20),
   &;-> StudentMarks int
   &;-> );
Query OK, 0 rows affected (0.77 sec)

다음으로 INSERT 명령을 사용해 테이블에 학생 데이터를 입력합니다.

mysql> INSERT INTO DemoTable VALUES('Chris',78);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('Robert',88);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Mike',75);
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('Sam',98);
Query OK, 1 row affected (0.16 sec)

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

mysql> SELECT * FROM DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| Chris | 78 |
| Robert | 88 |
| Mike | 75 |
| Sam | 98 |
+-------------+--------------+
4 rows in set (0.00 sec)

CASE WHEN 쿼리 적용하기

이제 점수(StudentMarks)에 따라 평가 상태를 자동으로 분류하는 CASE WHEN 쿼리를 작성해 보겠습니다. 90점 초과면 'Very Good Score', 80점 초과면 'Good Score', 그 외에는 'Not Good'으로 표시되도록 설정했습니다.

mysql> SELECT *,
   &;-> CASE WHEN StudentMarks > 90 THEN 'Very Good Score'
   &;-> WHEN StudentMarks > 80 THEN 'Good Score'
   &;-> ELSE
   &;-> 'Not Good'
   &;-> END AS Status
   &;-> FROM DemoTable;

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

+-------------+--------------+-----------------+
| StudentName | StudentMarks | Status |
+-------------+--------------+-----------------+
| Chris | 78 | Not Good |
| Robert | 88 | Good Score |
| Mike | 75 | Not Good |
| Sam | 98 | Very Good Score |
+-------------+--------------+-----------------+
4 rows in set (0.00 sec)

결과를 보면 각 학생의 점수에 따라 Status 컬럼에 조건별 평가 결과가 자동으로 표시된 것을 확인할 수 있습니다. 이처럼 CASE WHEN 절을 활용하면 별도의 후처리 작업 없이 쿼리 단계에서 바로 조건 분기를 처리할 수 있어, 보고서 생성이나 데이터 분류 작업에서 코드를 크게 단순화할 수 있습니다.