[day-42] 조건분기 (CASE)

Joohyung Park·2024년 3월 6일
0

[모두연] 오름캠프

목록 보기
77/95

CASE

파이썬의 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문이 있는데 이는 잘 사용하지 않는다고 한다.

profile
익숙해지기 위해 기록합니다

0개의 댓글