1. 문제목적
특정 조건에 따라 데이터를 필터링하고, 조건에 따라 데이터를 변환하거나 표시하며, 정렬된 결과를 반환하는 방법을 학습하기 위한 것이다. 이 과정을 통해 CASE, LIKE, IS NULL, 및 ORDER BY와 같은 SQL문법을 익히고 활용하는 방법을 이해하는 것이 목적이다.
2. 핵심개념
CASE 문:
SQL에서 조건에 따라 다른 값을 반환하거나 계산할 수 있는 제어 흐름 함수. CASE 문은 WHEN, THEN, ELSE, 및 END 키워드로 구성된다.
CASE
WHEN 조건 THEN 반환값
ELSE 반환값
END
IS NULL:
NULL 값을 검사하기 위해 사용하는 조건문. 특정 열의 값이 NULL인지 확인한다.
예: column_name IS NULL
LIKE:
문자열 데이터를 조건에 따라 검색할 때 사용된다.
- %는 와일드카드로, 0개 이상의 문자를 대체한다.
- 예: column_name LIKE '경기도%'는 경기도로 시작하는 모든 문자열을 검색한다.
ORDER BY:
데이터를 정렬하여 반환할 때 사용된다. 기본값은 오름차순(ASC)이며, 내림차순은 DESC를 사용한다.
- 예: ORDER BY column_name ASC
3. 문제해결절차
- 문제 분석
- FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고만 조회한다.
- 냉동시설 여부(FREEZER_YN)가 NULL일 경우 'N'으로 표시해야 한다.
- 결과는 창고 ID를 기준으로 오름차순으로 정렬한다.
- 핵심 접근법
- WHERE 조건을 이용해 ADDRESS가 경기도로 시작하는 행만 필터링.
- CASE와 IS NULL을 사용해 FREEZER_YN 값이 NULL이면 'N'으로 변환.
- ORDER BY를 사용해 창고 ID를 기준으로 정렬.
- SQL문 설계
- SELECT문에서 필요한 열과 변환된 FREEZER_YN 값을 선택.
- WHERE 조건으로 주소가 경기도로 시작하는 행만 선택.
- ORDER BY로 창고 ID를 정렬.
4. 코드작성
-- 경기도에 위치한 식품창고 목록을 출력하는 SQL문
SELECT
WAREHOUSE_ID, -- 창고 ID
WAREHOUSE_NAME, -- 창고 이름
ADDRESS, -- 주소
CASE
WHEN FREEZER_YN IS NULL THEN 'N' -- FREEZER_YN이 NULL일 경우 'N'으로 변환
ELSE FREEZER_YN -- 그렇지 않으면 원래 값 유지
END AS FREEZER_YN -- 변환된 값을 FREEZER_YN이라는 별칭으로 지정
FROM
FOOD_WAREHOUSE -- 데이터를 조회할 테이블
WHERE
ADDRESS LIKE '경기도%' -- 주소가 '경기도'로 시작하는 행만 필터링
ORDER BY
WAREHOUSE_ID ASC; -- 창고 ID를 기준으로 오름차순 정렬
- SELECT문으로 결과에 포함할 열을 선택.
- CASE 문: FREEZER_YN 값이 NULL이면 'N'을 반환, 그렇지 않으면 원래 값을 반환.
- WHERE 절: ADDRESS가 '경기도'로 시작하는 데이터만 선택.
- ORDER BY: 창고 ID를 기준으로 결과를 오름차순 정렬.
5. 코드분석
- CASE 문과 IS NULL:
- CASE 문은 조건에 따라 값을 변환하는 데 사용되며, IS NULL은 NULL 값을 검사한다. 이 조합을 통해 FREEZER_YN 값이 NULL일 때 'N'을 반환하도록 처리했다.
- LIKE '경기도%':
- 와일드카드 %를 사용해 ADDRESS가 '경기도'로 시작하는 모든 데이터를 선택한다.
- ORDER BY WAREHOUSE_ID ASC:
- 결과를 창고 ID를 기준으로 오름차순 정렬하여 보기 쉽게 구성했다.
'SQL Kit > IS NULL' 카테고리의 다른 글
ROOT 아이템 구하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.05 |
---|---|
NULL 처리하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.05 |
잡은 물고기의 평균 길이 구하기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |
나이 정보가 없는 회원 수 구하기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |
이름이 없는,있는 동물의 아이디 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |