본문 바로가기

DB - MySQL

SELECT문 - 조건문 활용

반응형

1. CASE 조건문

CASE 조건문을 이용하여 조건에 따른 다른 결과를 출력할 수 있다.

[기본 구문]

CASE -- CASE 조건문 시작
   WHEN condition1 THEN result1 -- 조건 1일 때, result 1 반환
   WHEN condition2 THEN result2 -- 조건 2일 때, result 2 반환
   ...
   WHEN conditionN THEN resultN -- 조건 N일 때, result N 반환
   ELSE default_result -- 조건에 맞지 않으면, default_result 반환
END -- CASE 조건문 끝

추가 설명: condition은 조건을 나타내는 식이며, result는 조건이 참일 경우 출력되는 값이다. else절은 위에 설정한 조건이 어떤 경우에도 만족하지 않을 때 출력될 기본값을 설정한다.

[예시]

create table student(
	sNo int auto_increment primary key,
  name char(10),
  subject char(30),
  score int
);

insert student (name, subject, score) values ( '김', '수학', 50);
insert student (name, subject, score) values ( '김', '영어', 80);
insert student (name, subject, score) values ( '이', '수학', 90);
insert student (name, subject, score) values ( '이', '영어', 70);

SELECT name, subject,
       CASE
            WHEN score >= 90 THEN 'A'
            WHEN score >= 80 THEN 'B'
            WHEN score >= 70 THEN 'C'
            WHEN score >= 60 THEN 'D'
            ELSE 'F' -- 위의 어느 조건에도 만족하지 않으면 F로 반환
       END AS grade 
FROM student;

# 결과
# name ㅣ subject ㅣ grade
# 김      수학       F
# 김      영어       B
# 이      수학       A
# 이      영어       C

SELECT name, subject,
       CASE score
            WHEN 90 THEN 'A'
            WHEN 80 THEN 'B'
            WHEN 70 THEN 'C'
            WHEN 60 THEN 'D'
            ELSE 'F' -- 위의 어느 조건에도 만족하지 않으면 F로 반환
       END AS grade 
FROM student;

# 결과
# name ㅣ subject ㅣ grade
# 김      수학       F
# 김      영어       B
# 이      수학       A
# 이      영어       C

2. IF 조건문

CASE 조건문과 유사하지만, 간단한 형태로 조건에 따른 다른 결과를 출력할 수 있다.

[기본 구문]

IF(condition, result1, result2)

추가 설명: condition은 조건을 나타내는 식이며, 참인 경우 result1이 출력되고 거짓인 경우 result2가 출력된다.

[예시]

# 기본 if절
SELECT name, subject, score,
       IF(score >= 80, 'Pass', 'Fail') AS result
FROM student;
# 결과
# name ㅣ subject ㅣ score ㅣ result
# 김      수학       50       Fail
# 김      영어       80       Pass
# 이      수학       90       Fail
# 이      영어       70       Pass

# if절 중첩
# CASE 예제 if절 중첩으로 표현해보기
SELECT name, subject, score,
  IF(score >= 90, 'A',
     IF(score >= 80, 'B',
        IF(score >= 70, 'C',
			IF(score >= 60, 'D', 'F')))) AS grade
FROM student;
# 결과
# name ㅣ subject ㅣ grade
# 김      수학       F
# 김      영어       B
# 이      수학       A
# 이      영어       C

3. 조건문 특징

💡 CASE 문과 IF절 모두 WHERE 구나 ORDER BY 구에서도 사용가능!

반응형

'DB - MySQL' 카테고리의 다른 글

서브쿼리와 상관 서브 쿼리  (0) 2023.05.24
SELECT문 - NULL값 관리  (0) 2023.05.23
SLECET문 - 집계함수 및 문자,숫자,날짜 관련 함수  (0) 2023.05.23
SELECT문 - 정렬  (0) 2023.05.23
SELECT문 - 조건활용(연산자)  (0) 2023.05.23