본문 바로가기
Programming/SQL

SQL 조건문 (CASE WHEN, DECODE)

by 코딩하는 금융인 2022. 7. 17.

안녕하세요.

오늘은 SQL에서 어떠한 방식으로 조건문이 쓰이는지 비교해보는 시간을 가져보겠습니다.

 

 SQL 조건문 함수, 예시

▣ SQL 조건문 함수

함수 설명
DECODE(A, B, C, D) A가 B일 경우 C를, 아닐 경우 D (생략 시 Null)
CASE WHEN A = B THEN C ELSE D

 

▣ 예시를 통한 SQL 조건문 설명

1) Decode 활용

예시에 앞서 한 가지 주의사항을 첨부하자면, Decode 함수는 오라클 쿼리에서 자주 사용되는 함수로 간단한 사용법으로 많이들 편리하게 사용하나 표준함수가 아니라는 범용성 문제가 있습니다. 그리고 부등호 사용이 불가능하여 값의 크기에 따른 조건 부여가 불가능하니 유의하시기 바랍니다.

 

Data:: People

Code Name Gender Height
001 Mike M 180
001 John M 174
003 Huni M 184
003 Jenny F 168
005 Max F 164

 

-- 코드 <성별 구분 짓기>

Select *,
	Decode(Gender, "M", "남자", "F", "여자")
From People

 

-- 코드 <지역별 코드 나누기>

Select *,
	Decode(Codes, '001', '서울시', '003', '경기도', '005', '부산시')
From People
반응형

2) Case When 활용

SQL에서 가장 많이 활용되는 조건문으로 조건에 따라 값을 부등호 상관없이 지정해줄 수 있습니다.

 

Data:: LCK <LCK Summer 2022 Mid Line>

Team Player Games Win Lose WinRates KDA K D A
KT Aria
Ga-eul Lee
9 3 6 0.333 4.13 2.67 1.78 4.67
NS Bdd
Bo-seong Gwak
20 5 15 0.25 2.79 2.45 2.65 4.95
GEN Chovy
Ji-hoon Jeong
20 17 3 0.85 7.75 2.9 1 4.85
LSB Clozer
Ju-hyeon Lee
22 14 8 0.636 3.76 2.73 2.09 5.14
KDF FATE
Su-hyeok Yoo
23 8 15 0.348 4.21 1.48 1.48 4.74
T1 Faker
Sang-hyeok Lee
24 19 5 0.792 4.33 2.17 1.79 5.58
HLE Karis
Hong-jo Kim
26 7 19 0.269 2.2 1.62 2.5 3.88
BRO Lava
Tae-hoon Kim
19 3 16 0.158 2.38 1.47 2.11 3.53
DK ShowMaker
Su Heo
20 14 6 0.7 6.42 2.45 1.3 5.9
KT Vicla
Dae-gwang Lee
15 9 6 0.6 3.51 2 2.33 6.2
DRX Zeka
Geon-woo Kim
24 12 12 0.5 4.67 3.5 1.79 4.88

예시 데이터로 제가 즐겨보는 LCK에서 뛰는 선수들의 데이터들을 사용해보겠습니다.

 

-- 코드 <KDA로 나누는 선수 등급>

Select *,
	(Case When KDA >= '4' Then 'S'
    	  When (KDA >= '3' AND KDA < '4') Then 'A'
          When (KDA >= '2.5' AND KDA < '2') Then 'B'
          Else 'C'
     End) As 'Class'
From LCK

 

-- 코드 <승률로 나누는 성적>

Select *,
	(Case When WinRates >= '0.7' Then 'Very Good'
          When (WinRates >= '0.5' AND WinRates < '0.7') Then 'Good'
          When (WinRates >= '0.4' AND WinRates < '0.5') Then 'Bad'
          Else 'Very Bad'
     End) As 'Evaluation'
     From LCK

 

반응형

댓글