단순한 형식
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
ELSE 기본결과
END
이 경우, 각 조건문은 "WHEN" 키워드 뒤에 오며, 해당 조건이 참일 때 실행될 결과가 지정됩니다.
1. 단순한 형식 예제
이 예제에서는 학생의 성적을 기준으로 학점을 부여하는 경우를 가정해보겠습니다. 다음과 같은 데이터가 있다고 가정해봅시다.
학생 이름 | 성적 |
Alice | 85 |
Bob | 70 |
Carol | 95 |
Dave | 60 |
이 데이터를 기반으로 성적에 따라 학점을 부여하려면 다음과 같이 "CASE WHEN" 문을 사용할 수 있습니다.
SELECT
학생 이름,
성적,
CASE
WHEN 성적 >= 90 THEN 'A'
WHEN 성적 >= 80 THEN 'B'
WHEN 성적 >= 70 THEN 'C'
WHEN 성적 >= 60 THEN 'D'
ELSE 'F'
END AS 학점
FROM 성적표;
이 쿼리는 각 학생의 성적에 따라 학점을 부여하며, 결과는 다음과 같을 것입니다
학생 이름 | 성적 | 학점 |
Alice | 85 | B |
Bob | 70 | C |
Carol | 95 | A |
Dave | 60 | D |
검색 형식
CASE 표현식
WHEN 값1 THEN 결과1
WHEN 값2 THEN 결과2
ELSE 기본결과
END
이 경우, "CASE" 키워드 다음에 평가될 표현식을 먼저 작성하고, 그 결과와 각 값과의 비교를 수행하여 조건을 결정합니다.
이렇게 다양한 조건문의 위치와 형식으로 "CASE WHEN" 문을 사용할 수 있습니다. 이는 SQL 문법에서 일반적으로 사용되는 방법 중 몇 가지 예시일 뿐이며, 더 복잡한 쿼리에서는 더 다양한 조건문의 구성이 가능할 수 있습니다.
검색 형식 예제
이번에는 주어진 숫자에 따라 해당 숫자가 어떤 유형인지 판별하는 예제를 살펴보겠습니다.
SELECT
숫자,
CASE 숫자
WHEN 0 THEN '제로'
WHEN 1 THEN '일'
WHEN 2 THEN '이'
WHEN 3 THEN '삼'
ELSE '기타'
END AS 숫자_이름
FROM 숫자_테이블;
이 쿼리는 각 숫자에 대해 해당하는 유형을 판별하여 결과를 출력하며, 결과는 다음과 같을 것입니다
숫자 | 숫자_이름 |
0 | 제로 |
1 | 일 |
2 | 이 |
3 | 삼 |
4 | 기타 |
이렇게 "CASE WHEN" 문을 사용하여 조건에 따라 다양한 결과를 생성할 수 있습니다.
단순 -> 검색
SELECT f.title,
CASE WHEN (SELECT count(*)
FROM inventory i
WHERE i.film_id = f.film_id) = 0 THEN 'Out Of Stock'
WHEN (SELECT count(*)
FROM inventory i
WHERE i.film_id = f.film_id) = 1 THEN 'Scarce'
WHEN (SELECT count(*)
FROM inventory i
WHERE i.film_id = f.film_id) = 2 THEN 'Scarce'
WHEN (SELECT count(*)
FROM inventory i
WHERE i.film_id = f.film_id) = 3 THEN 'Available'
WHEN (SELECT count(*)
FROM inventory i
WHERE i.film_id = f.film_id) = 4 THEN 'Available'
ELSE 'Common'
END film_availability
FROM film f;
SELECT f.title,
CASE (SELECT count(*)
FROM inventory i
WHERE i.film_id = f.film_id)
WHEN 0 THEN 'Out Of Stock'
WHEN 1 THEN 'Scarce'
WHEN 2 THEN 'Scarce'
WHEN 3 THEN 'Available'
WHEN 4 THEN 'Available'
ELSE 'Common'
END film_availability
FROM film f;
해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.
'Big Data > Database' 카테고리의 다른 글
SELECT -> INSERT (0) | 2023.08.15 |
---|---|
REGEXP (0) | 2023.08.04 |
MySQL에 csv 파일 데이터 적재 (0) | 2023.08.02 |
MySQL에서 UnixTime (0) | 2023.07.31 |
LAG & LEAD 함수 (0) | 2023.07.27 |