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은 계속 쓰면서 연습해봐야 할 것 같다.
이거만 쓰면 자꾸 쿼리가 복잡해져서 써도 써도 어렵다.
'SQL' 카테고리의 다른 글
[SQL] 고객 잔존율을 구해보자 (0) | 2022.01.04 |
---|---|
[SQL] Create table / Drop table 알아보자 (0) | 2022.01.03 |
[SQL] RANK () OVER / ROW_NUMBER () OVER / DENSE()OVER 를 알아보자 (0) | 2022.01.03 |
[SQL] 자주 쓰는 날짜 함수 알아보자 (0) | 2022.01.03 |
[SQL] Group by 쉽게 알아보자 (0) | 2022.01.03 |
댓글