SQL 연습 - 비교연산자 = , if 조건문이 여러개일때.. case ~ when

1. 문제

 

코딩테스트 연습 - 조건에 부합하는 중고거래 상태 조회하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

2. 풀이

 

먼저 문제를 잘 읽어야한다...

 

중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요..

 

근데 잘 보면.., '2022년 10월 5일에 등록된' 게시글의 게시글ID,...를 조회하라고 나와있잖아

 

SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, STATUS FROM USED_GOODS_BOARD
WHERE CREATED_DATE = '2022-10-05';

 

 

근데 STATUS가 SALE이면 '판매중', RESERVED이면 '예약중', DONE이면 '거래완료'로 출력해달래

 

https://deepdata.tistory.com/1006

 

SQL 연습 - 시간 차이는 무조건 DATEDIFF, MYSQL의 if문-

1. 문제 코딩테스트 연습 - 자동차 대여 기록에서 장기/단기 대여 구분하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스

deepdata.tistory.com

 

이전에 공부한 IF문은 IF(조건문, '참'인 경우, '거짓'인 경우)로 조건 1가지만 가능했는데..?

 

그러면 STATUS가 SALE인지 판단하고 참이면 '판매중'으로 바꾸고 

 

거짓이면 다시 조건문으로 RESERVED인지 판단하고 참이면 '예약중'으로 바꾸고

 

이것도 거짓이면 '거래완료'로 바꾼다

 

IF(조건문1, '조건문 1이 참'인 경우, ""IF(조건문2, '조건문 2가 참'인 경우, '조건문 2도 거짓'인 경우)"")로 연쇄적으로 사용하면 된다

 

IF(STATUS = 'SALE' , '판매중', IF(STATUS = 'RESERVED','예약중','거래완료')) as STATUS

 

 

여기서 프로그래밍 하다보니.. 비교 연산자가 == 인줄

 

https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%EC%97%B0%EC%82%B0%EC%9E%90-%EC%A0%95%EB%A6%AC

 

[MYSQL] 📚 연산자 종류 정리

산술 연산자 산술 연산자 설명 +, - ,*, / 덧셈, 뺄셈, 곱셈, 나눗셈 DIV 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 소수 부분을 버림. %또는 MOD 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 그 나

inpa.tistory.com

 

 

SQL에서는 동일한지 비교하는 연산자가 =이더라고

 

 

 

SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, 
IF(STATUS = 'SALE' , '판매중', IF(STATUS = 'RESERVED','예약중','거래완료')) as STATUS
 FROM USED_GOODS_BOARD
 WHERE CREATED_DATE = '2022-10-05'
 ORDER BY BOARD_ID desc;

 

 

또 다른 방법으로는 CASE문이라는게 있다

 

https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%EC%A0%9C%EC%96%B4%EB%AC%B8

 

(

CASE

 

WHEN 조건문1 THEN 조건문 1이 참인 경우

WHEN 조건문2 THEN 조건문 2가 참인 경우

WHEN 조건문3 THEN 조건문 3이 참인 경우

...

...

(ELSE '모든 조건문이 거짓인 경우') >>> 생략가능

END

) as (바꾸고 싶은 컬럼 이름명)

 

형태로 사용하면 된다.

 

-- 코드를 입력하세요
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, 
(
CASE
 WHEN STATUS = 'SALE' THEN '판매중'
 WHEN STATUS = 'RESERVED' THEN '예약중'
 WHEN STATUS = 'DONE' THEN '거래완료'
END
) as STATUS
 FROM USED_GOODS_BOARD
 WHERE CREATED_DATE = '2022-10-05'
 ORDER BY BOARD_ID desc;

 

TAGS.

Comments