파이썬의 if문과 비슷한 느낌이다.
가장 먼저 CASE WHEN
으로 처음 조건을 선언하고 해당 조건이 참인경우의 실행 조건을 적는다.
이후 WHEN
으로 새로운 조건을 추가하거나 ELSE
문으로 거짓일 경우의 실행 구문을 적고 END
문으로 마무리하는 형식이다.
CASE WHEN
조건
THEN
참일경우_실행구문
ELSE
거짓일경우_실행구문
END
as 새로운_변수명
select
id,
cost,
CASE
WHEN cost <= 20 THEN '저비용'
WHEN cost <= 50 THEN '중비용'
WHEN cost > 50 THEN '고비용'
ELSE '없음'
END as `cost_level`
from `thelook_ecommerce.products`
order by id
두번째 WHEN
부터는 elif(else if)와 같다고 보면 된다.
서브쿼리 문을 사용하여 조금더 복잡한 조건도 처리 가능하다.
여기서 서브쿼리란, 복잡한 쿼리를 더 작은 부분으로 나눠 처리하거나 한 쿼리의 결과를 다른 쿼리에 입력하는 등 다양한 용도로 사용된다.
select
extract(YEAR FROM created_at) as year,
count(CASE WHEN gender = 'M' THEN gender END) AS male, -- 조건에 맞는 것을 집계
count(CASE WHEN gender = 'F' THEN gender END) AS female, -- 조건에 맞는 것을 집계
count(id) AS total
from `thelook_ecommerce.users`
group by year
order by year;
위 코드에서 ()안의 문이 서브 쿼리문이다.
SQL에도 프로그래밍언어와 똑같이 IF문이 있는데 이는 잘 사용하지 않는다고 한다.