본문 바로가기
SQL

[SQL] Case when ~ then ~ end 조건 표현식 쉽게 써보자

by 병든늑대 2022. 1. 3.

 

 

Case When 조건문

Case When은 자주 쓰면서도 쉽게 이해하지 못해서 친해지기 어려웠던 구문이다.

조건을 잘 넣은 것 같은데 맨날 오류가 나서 분노를 유발했던 친구이기 때문이다.

그래서 글로 쓰면서 정리해보려고 이렇게 기록을 남겨본다. 

사용하면서 내가 알게 된 것은 다음과 같다. 

 

 

- 나는 주로 select 절에 사용한다. 다른 절에 사용이 가능한지는 모르겠다.

- 해석하자면 Case when 이러이러한 조건일 때 then 얘를 출력해줘 else 나머지는 이렇게 출력해줘 end 정도이다. 
(Case When 조건값 then 결과값 else 다른 경우 결과값 end)

- 다중 조건도 가능하고, 여러 값을 출력하는 것도 가능하다. 그래서 아래처럼 MECE하게 값을 구분해야 할 때 사용한다.

*MECE : 중복과 누락 없이 분석하는 원칙. 서로 배타적이면서도 부분의 합들이 전체를 이루도록 하는 것

case when delivery_tip >= 0 and delivery_tip < 1000 then '>1000'
    when delivery_tip >= 1000 and delivery_tip < 2000 then '1000~1900'
    when delivery_tip >= 2000 and delivery_tip < 3000 then '2000~2900'
    when delivery_tip >= 3000 and delivery_tip < 4000 then '3000~4000'
    when delivery_tip >= 4000 and delivery_tip < 5000 then '4000~5000'
    when delivery_tip >= 5000 and delivery_tip < 6000 then '5000~6000'
    else '>= 6000' END "tip"

- 사실 나는 이거 쓸때마다 헷갈린다. 오류가 나는데 왜 나는지 모르겠그등...

- 예시는 하나 더 있으면 좋으니까 붙여놓기.

CASE WHEN AGE< 10 THEN '0-9' 
	WHEN AGE>=10 AND AGE<20 THEN '10-19' 
	WHEN AGE>=20 AND AGE<30 THEN '20-29' 
	WHEN AGE>=30 AND AGE<40 THEN '30-39'
	WHEN AGE>=40 AND AGE<50 THEN '40-49' 
	WHEN AGE>=50 AND AGE<60 THEN '50-59' 
	ELSE '>=60' END "AGE_GROUP"

 

Case When은 계속 쓰면서 연습해봐야 할 것 같다. 

이거만 쓰면 자꾸 쿼리가 복잡해져서 써도 써도 어렵다.

 

댓글