SQL, CASE WHEN THEN 구문 사용법
- Database
- 2023. 4. 4.
case when then … SQL 문은 조건부 로직을 처리하기 위해 사용됩니다. 조건에 따라 결과를 다르게 반환할 수 있습니다.
CASE
기본 구조는 다음과 같습니다.
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE 결과
END AS 컬럼명
WHEN으로 조건(WHEN)을 순차적으로 평가해서 참인 경우엔(THEN) 그에 맞는 결과를 반환합니다. 모든 조건이 거짓이면 ELSE 절의 결과를 반환합니다. ELSE 절은 옵션입니다. 생략할 수 있습니다. 만약 ELSE 절이 없고 모든 조건이 거짓이면 NULL을 반환합니다.
예시 1)
예를 들어, 제품 테이블에서 상품 가격에 따라 할인율 지정하고 그 값을 출력하고 싶다고 가정합니다. 이 경우 case 문을 이용해서 price 컬럼의 값이 1000 이상이면 discount_rate 컬럼에 '10% 할인'을, 500 이상이면 '5% 할인'을 조건에 부합하지 않으면 '할인 없음'을 반환합니다.
SELECT
product_name,
price,
CASE
WHEN price >= 1000 THEN '10% 할인'
WHEN price >= 500 THEN '5% 할인'
ELSE '할인 없음'
END AS discount_rate
FROM products;
비슷한 방식으로 여러 예제를 보면 이해가 쉬우실 겁니다.
예시 2)
성적에 따른 학점 부여를 한다고 가정합니다. 점수별로 grade라는 컬럼에 A, B, C, D라는 값을 반환할 수 있습니다.
SELECT
student_id,
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM exam_results;
예시 3)
연령별로 고객을 분류합니다.
SELECT
customer_id,
age,
CASE
WHEN age < 18 THEN '청소년'
WHEN age >= 18 AND age < 35 THEN '청년'
WHEN age >= 35 AND age < 65 THEN '중년'
ELSE '노년'
END AS age_group
FROM customers;
반응형
'Database' 카테고리의 다른 글
MSSQL, PRIMARY KEY CLUSTERED 의미 (0) | 2023.04.04 |
---|---|
MSSQL, GETDATE() 함수 사용법 (0) | 2023.04.04 |
MS SQL Server MDF, LDF 저장 위치 / 변경 방법 (0) | 2023.03.27 |
몽고DB mongod.cfg 설정 옵션들 의미 (0) | 2023.03.21 |
MYSQL DB 서버 이관하는 방법 (리눅스) (0) | 2023.03.12 |