프로그래머스 SQL 기초 정리

SUSU·2023년 6월 29일
0

https://school.programmers.co.kr/learn/courses/30/lessons/164672

조건에 부합하는 중고거래 상태 조회하기

문제

USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.

해결

특정 조건에 따라 분류, 변환하여 출력하기 위해 CASE WHEN를 사용한다.

CASE WHEN 구문은 SQL에서 조건부로 값을 반환하는데 사용되는 구문으로 다양한 조건을 지정하고 해당 조건에 따라 다른 값을 반환할 수 있다.

아래와 같은 테이블에서

BOARD_IDWRITER_IDTITLECONTENTSPRICECREATED_DATESTATUSVIEWS
B0001kwag98반려견 배변패드 팝니다 정말 저렴히 판매합니다. 전부 미개봉 새상품입니다.120002022-10-01 00:00:00DONE250
B0002lee871201국내산 볶음참깨 직접 농사지은 참깨입니다.30002022-10-02 00:00:00DONE141
B0003goung12배드민턴 라켓 사놓고 방치만 해서 팝니다.90002022-10-02 00:00:00SALE212
B0004keel1990디올 귀걸이 신세계강남점에서 구입. 정품 아닐시 백퍼센트 환불1300002022-10-02 00:00:00SALE199
B0005haphli01스팸클래식 팔아요 유통기한 2025년까지에요100002022-10-02 00:00:00SALE122

아래와 같은 쿼리를 작성해서 원하는 결과를 얻을수 있다

SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, 
	case 
		when  STATUS = 'DONE' THEN '거래완료' 
		when  STATUS = 'SALE' THEN '판매중' 
		when  STATUS = 'RESERVED' THEN '예약중' 
	END AS 상태
FROM USED_GOODS_BOARD

WHERE CREATED_DATE LIKE '2022-10-05'
order by BOARD_ID desc

위의 예시에서 [STATUS = 'DONE']은 조건 검색을 원하는 열의 이름이고, USED_GOODS_BOARD은 데이터를 가져올 테이블의 이름이다. CASE WHEN 구문은 상태라는 새로운 열을 생성하여 조건에 따라 다른 값을 반환한다.

CASE WHEN 구문은 다음과 같이 작성됩니다:

WHEN STATUS = 'DONE' THEN '거래완료' : [STATUS = 'DONE']가 참일 경우 '거래완료' 를 반환합니다.
ELSE '해당없음'을 조건 마지막에 붙여 위의 조건에 해당하지 않을 경우 '해당없음'을 반환하는것도 가능하다

profile
기록용

0개의 댓글