코딩테스트/프로그래머스

[SQL/프로그래머스] 경기도에 위치한 식품창고 목록 출력하기, CASE

s워니얌 2023. 1. 17. 16:07

 

프로그래머스 SQL 1단계 경기도에 위치한 식품창고 목록 출력하기 오라클, 이번 문제에서는 CASE문에 대해 정리하는 시간을 가졌다. 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 


 

 

📑 CASE문 사용 방법

 

문) FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요.

 

문제가 다음과 같을 때 마지막 문장에 NULL인 경우 'N'으로 출력에서 CASE가 필요하다. 

 

 

CASE 문법은 다음과 같은데 조건을 만족하지 않을때는 NULL값을 리턴하기 때문에 ELSE문은 생략이 가능하다. 문제에서는 NULL인 경우 'N'을 출력하고 아닌 경우 원래 컬럼 값으로 출력해주면 되는데 NULL의 값이 제대로 출력되지 않는 거 아닌가? 

 

 

-- 코드를 입력하세요
SELECT WAREHOUSE_ID,WAREHOUSE_NAME,ADDRESS
,CASE FREEZER_YN WHEN 'Y' THEN 'Y' 
                WHEN 'N' THEN 'N' 
                ELSE 'N'
END FREEZER_YN
from FOOD_WAREHOUSE 
where ADDRESS like '%경기도%'
order by WAREHOUSE_ID;

 

그래서 이렇게 짰더니 정답은 맞는데 뭔가 찜찜 검색해보니 WHEN FREEZER_YN  IS NULL 순서로 값을 넣었어야 했다. IS NULL을 생각 못했다. 

 

-- 코드를 입력하세요
SELECT WAREHOUSE_ID,WAREHOUSE_NAME,ADDRESS
,CASE WHEN FREEZER_YN  IS NULL THEN 'N'
ELSE FREEZER_YN END FREEZER_YN
from FOOD_WAREHOUSE 
where ADDRESS like '%경기도%'
order by WAREHOUSE_ID;

 

 

 

 

출처 : https://kongda.tistory.com/39

반응형