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

정새·2023년 11월 13일
0

이번에 다뤄볼 문제는 다양한 조건을 활용하여 데이터를 조회하는 문제입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/131697
프로그래머스 기준 Lv.1 문제이며, 풀이 후 해설과 함께 정리해보도록 하겠습니다.


문제에서 주어진 요구사항은 다음과 같습니다.

1. 식품 창고 테이블에서 경기도에 위치한 데이터만을 조회
2. 이 때, 창고의 ID, 이름, 주소, 냉동시설 여부 컬럼에 대해 조회
3. 냉동 시설은 NULL이 허용되어있으며, NULL인 경우 'N'으로 출력
4. 최종 결과는 창고 ID를 기준으로 오름차순 정렬

앞서 해결했던 문제들 중 가장 많은 조건을 갖는 문제인 것 같습니다.

이를 해결하기 위해선 조건, 정렬 및 결측값에 대한 처리가 각각 필요합니다.

이러한 요구사항에 맞추어 조합하여 주어진 문제에 대한 SQL문을 작성해보겠습니다.


가장 먼저 조회가 필요한 이름 컬럼에 대해 SELECT 문을 작성합니다.

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, FREEZER_YN
        FROM '비워두기';

다음으로 어느 테이블에서 데이터를 가져올 것인지 정의해주어야합니다.

이는 식품 창고 테이블을 의미하며, 이를 작성해주도록 하겠습니다.

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, FREEZER_YN
        FROM FOOD_WAREHOUSE;

다음으로 전체 데이터 중 '경기도'에 위치한 데이터만을 필터링해야합니다.

이를 위해 SQL의 와일드카드를 사용하여, '경기'가 들어간 데이터만을 조회합니다.

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, FREEZER_YN
        FROM FOOD_WAREHOUSE
        	WHERE WAREHOUSE_NAME LIKE '%경기%';

이후 전체 데이터를 창고 ID 기준으로 정렬하기 위한 ORDER BY를 작성합니다.

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, FREEZER_YN
        FROM FOOD_WAREHOUSE
        	WHERE WAREHOUSE_NAME LIKE '%경기%'
            	ORDER BY WAREHOUSE_ID ASC;

마지막으로 NULL 데이터에 대해 처리해줄 수 있도록 NVL 함수를 사용합니다.

이는 값이 비어있는 NULL인 경우, 작성된 데이터로 치환하는 과정을 의미합니다.

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, NVL(FREEZER_YN, 'N') 
        FROM FOOD_WAREHOUSE
        	WHERE WAREHOUSE_NAME LIKE '%경기%'
            	ORDER BY WAREHOUSE_ID ASC;

복잡해보였지만 점진적 해결을 통해 손쉽게 해결해낼 수 있었습니다.


이번 문제 또한 단순 풀이는 맞았지만, 최적의 방법인지 알 수 없습니다.

다른 사람들의 코드를 읽고 배워가며, 최적화된 코드를 작성할 수 있도록 노력하겠습니다.

긴 글 읽어주셔서 감사합니다.

profile
intersection for analysis, modeling, science ... working on it !

0개의 댓글

관련 채용 정보