안녕하세요.
오늘은 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
반응형
'Programming > SQL' 카테고리의 다른 글
[SQL] 기본키 Primary Key (0) | 2022.10.30 |
---|---|
[MySQL] auto_increment 자동증가 설정 (0) | 2022.10.26 |
[MySQL] with recursive 재귀쿼리 (개념/예제) (0) | 2022.02.14 |
[SQL] 와일드카드 문자 (패턴 일치) (0) | 2022.01.30 |
[MySQL] 수학함수 다루기 (0) | 2022.01.17 |
댓글