https://school.programmers.co.kr/learn/courses/30/lessons/131114
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이문제
NULL 일 경우 N을 추출해야하면 .. WHERE 절을 써야하나? 고민하다가 CASE WHEN 절을 사용하기로 결심
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, FREEZER_YN
FROM FOOD_WAREHOUSE
CASE
WHEN FREEZER_YN IS NULL
THEN N
END;
당연히 오류 발생
1. N이 아니라 'N'이라고 입력해야 함
2. FREEZER_YN자리에 CASE문이 출력되어야 하니까 쟤를 넣어서 만들어야 한다
그러니까 어떻게 하나면
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;
NULL이면 N을 출력하고 아니면 FREEZER_YN을 출력해주세요 가 되어야 하니까 FREEZER_YN을 쓰는 게 아닌 CASE WHEN 절을 써줘야 한다는 사실!
근데 더 쉽게 풀 수 있는 방법이 있을 것 같은데.. 음
아 NULL함수가 3개나 있는데 이걸 사용하지 않는 멍청함을 보여준 것임
<NULL함수>
1. NVL(AGE, 0) > AGE값이 NULL이면 0으로 대체하겠다
2. NVL2(AGE, 값1, 값2) > AGE가 NULL이 아니면 값1을, NULL이면 값2를
3. NULLIF(AGE, 19) > 두 값이 같을 경우 NULL을 아닐 경우 AGE를 출력
바보야
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, NVL(FREEZER_YN, 'N')
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID;
끗
<LEARNING POINT>
1. N은 문자열, 문자열에는 꼭 ' ' 사용
2. NULL 함수 적극 사용
'SQL' 카테고리의 다른 글
프로그래머스 SQL문제(6) - 주문량이 많은 아이스크림들 조회하기 (0) | 2023.08.09 |
---|---|
프로그래머스 SQL문제(5) - 그룹별 조건에 맞는 식당 목록 출력하기 (1) | 2023.08.09 |
프로그래머스 SQL 문제(3) - 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.08.02 |
프로그래머스 SQL 문제(2) - 성분으로 구분한 아이스크림 총 주문량 (0) | 2023.08.02 |
프로그래머스 SQL 문제(1) 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.07.31 |