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

행복한 콩🌳·2022년 11월 9일
0

SQL

목록 보기
18/31

문제 설명

다음은 식품창고의 정보를 담은 FOOD_WAREHOUSE 테이블입니다. FOOD_WAREHOUSE 테이블은 다음과 같으며 WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, TLNO, FREEZER_YN는 창고 ID, 창고 이름, 창고 주소, 전화번호, 냉동시설 여부를 의미합니다.

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

예시
FOOD_WAREHOUSE 테이블이 다음과 같을 때
SQL을 실행하면 다음과 같이 출력되어야 합니다.

CASE 문을 활용한 답

SELECT WAREHOUSE_ID
       , WAREHOUSE_NAME
       , ADDRESS
       , CASE WHEN FREEZER_YN IS NULL THEN 'N' ELSE FREEZER_YN END
    FROM FOOD_WAREHOUSE
   WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID

풀이

  • FOOD_WAREHOUSE 테이블에서 주소가 경기도인 컬럼 WAREHOUSE_ID와 WAREHOUSE_NAME, ADDRESS, FREEZER_YN을 가져온다. 근데, FREEZER_YN을 CASE WHEN 문을 사용하여 NULL이면 N, 그렇지 않으면 그대로 출력을 하는데, WAREHOUSE_ID를 기준으로 오름차순으로 정렬하여 출력하면 된다.
    3~6번째 줄 CASE문: CASE WHEN을 사용하여 FREEZER_YN ➡️ NULL이면 "N"을 반환하고 아니면 그대로 FREEZER_YN을 반환한다. 마지막으로 별칭을 지정해준다.

IFNULL 사용한 다른 풀이

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID

1번째 줄: ID(WAREHOUSE_ID), 이름(WAREHOUSE_NAME), 주소(ADDRESS), 냉동시설 여부(FREEZER_YN) 이 때 냉동시설 여부가 NULL인 경우, 'N'으로 출력이니깐 IFNULL을 사용하여 NULL ➡️ "N"으로 출력한다.
3번째 줄: ADDRESS 에서 LIKE를 사용하여 "경기"가 들어가는 주소를 찾는다.
4번째 줄: 결과는 창고 ID를 기준으로 오름차순 정렬

IF문을 쓴 풀이

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, 
IF (FREEZER_YN IS NULL, 'N',FREEZER_YN) AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID

조건 ➡️ (FREEZER_YN이 NULL이면)
참 ➡️ "N"
거짓 ➡️ FREEZER_YN(그대로 출력)

profile
매일매일 조금씩 모여 숲이 되자🐣

0개의 댓글