2024. 9. 14. 18:00ㆍSQL 고득점 Kit/IS NULL
https://school.programmers.co.kr/learn/courses/30/lessons/131114
문제 설명
다음은 식품창고의 정보를 담은 FOOD_WAREHOUSE 테이블입니다. FOOD_WAREHOUSE 테이블은 다음과 같으며 WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, TLNO, FREEZER_YN는 창고 ID, 창고 이름, 창고 주소, 전화번호, 냉동시설 여부를 의미합니다.
Column name | Type | Nullable |
WAREHOUSE_ID | VARCHAR(10) | FALSE |
WAREHOUSE_NAME | VARCHAR(20) | FALSE |
ADDRESS | VARCHAR(100) | TRUE |
TLNO | VARCHAR(20) | TRUE |
FREEZER_YN | VARCHAR(1) | TRUE |
문제
FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요.
예시
FOOD_WAREHOUSE 테이블이 다음과 같을 때
WAREHOUSE_ID | WAREHOUSE_NAME | ADDRESS | TLNO | FREEZER_YN |
WH0001 | 창고_경기1 | 경기도 안산시 상록구 용담로 141 | 031-152-1332 | Y |
WH0002 | 창고_충북1 | 충청북도 진천군 진천읍 씨제이로 110 | 043-623-9900 | Y |
WH0003 | 창고_경기2 | 경기도 이천시 마장면 덕평로 811 | 031-221-7241 | NULL |
WH0004 | 창고_경기3 | 경기도 김포시 대곶면 율생중앙로205번길 | 031-671-1900 | N |
WH0005 | 창고_충남1 | 충청남도 천안시 동남구 광덕면 신덕리1길 9 | 041-876-5421 | Y |
SQL을 실행하면 다음과 같이 출력되어야 합니다.
WAREHOUSE_ID | WAREHOUSE_NAME | ADDRESS | TLNO | FREEZER_YN |
WH0001 | 창고_경기1 | 경기도 안산시 상록구 용담로 141 | 031-152-1332 | Y |
WH0003 | 창고_경기2 | 경기도 이천시 마장면 덕평로 811 | 031-221-7241 | N |
WH0004 | 창고_경기3 | 경기도 김포시 대곶면 율생중앙로205번길 | 031-671-1900 | N |
창고 정보가 담긴 테이블이 주어졌을 때, 경기도에 위치한 창고의 창고 ID, 창고 이름, 주소, 냉동장치 여부를 조회하는 문제입니다.
이때, 냉동장치 여부가 비어있다면(NULL), 해당 값을 N으로 처리하여 출력합니다.
냉동장치 여부에 따라서 값을 다르게 출력해야 하는 문제로, CASE WHEN절을 사용하는 문제입니다.
FREEZER_YN이 NULL이라면 N을, 값이 있다면 그대로 출력해야 하는 조건인거죠.
경기도에 위치한 지는 주소의 시작이 '경기도' 세 글자로 시작하는지 확인하면 됩니다.
정답 코드를 작성해보겠습니다.
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS,
CASE WHEN FREEZER_YN IS NULL THEN 'N'
ELSE FREEZER_YN END AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE "경기도%"
ORDER BY WAREHOUSE_ID ASC;
위에 작성한대로, CASE WHEN절을 사용해 FREEZER_YN 여부에 따라 출력을 다르게 작성했습니다.
또한 '경기도'로 시작하는 값들만 출력하도록 WHERE 조건절을 활용했습니다.
정렬 기준으로 창고 ID를 기준으로 오름차순을 구현하면 문제를 해결할 수 있습니다.
'SQL 고득점 Kit > IS NULL' 카테고리의 다른 글
[IS NULL] ROOT 아이템 구하기 (4) | 2024.09.22 |
---|---|
[IS NULL] 나이 정보가 없는 회원 수 구하기 (0) | 2024.09.20 |
[IS NULL] NULL 처리하기 (0) | 2024.09.17 |
[IS NULL] 이름이 있는 동물의 아이디 (0) | 2024.09.16 |
[IS NULL] 이름이 없는 동물의 아이디 (0) | 2024.09.15 |