특정 컬럼 값을 어떤 조건으로 나눠 새로운 컬럼을 만들고 싶을 떄 사용
: SELECT
CASE WHEN 조건 값 THEN 조건이 참일 때 값 ELSE 조건이 거짓일떄 값 END AS "컬럼명"
필수 요소
- CASE: 구문의 시작을 알리는 키워드
- WHEN : 조건을 지정
- THEN: 조건이 참일때 반환값을 지정
-END: 구문 종료를 알리는 키워드
선택사항
- ELSE : 모든 WHEN 조건이 거짓일때 반환 값 지정 (생략시 NULL 반환)
- AS : 반환된 값을 참조할 별칭 지정 (생략가능)
: 학생들의 점수를 알파벳 등급으로 나누고 싶은 상황
예시 2 (두개 이상의 컬럼 생성)
: 위와 동일한 students 테이블에서 점수가 60 이상인 학생은 pass , 60미만인 학생은 failure 구분하는 컬럼 생성
SELECT student_id , student_name,
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" , ---- ①첫번째 case when절 = 컬럼 1개
case when grade >=60 then "pass" else "failure" END AS "pass_fail" -- ② 두번째 case when절 = 컬럼 1개
from students
: 각 제품의 카테고리별 판매량이 궁금한 상황
SELECT category,
SUM(CASE WHEN category ='전자기기' then sales else 0) END AS "전자기기 판매량",
SUM(CASE WHEN category='가구' then sales else 0) END AS "가구 판매량
FROM products
GROUP BY 1