database

Programmers SQL 고득점 Kit 풀기 - IS NULL

fladi 2025. 2. 12. 00:02
728x90

 

이전 글

https://fladi.tistory.com/446

 

 

서론 

이전에 SUM,MIN,MAX 집계함수에 대해 알아봤다. ISNULL 부분도 빠르게 풀어보려고 한다. 문제 사이트는 다음과 같다.

https://school.programmers.co.kr/learn/courses/30/parts/17045

 

 

1. 경기도에 위치한 식품창고 목록 출력하기 - 레벨1

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

IFNULL이라는 함수를 모르면 못푸는 문제다. 알면 쉽게 풀 수 있다

 

 

2. 이름이 없는 동물의 아이디 - 레벨1

SELECT ANIMAL_ID 
FROM ANIMAL_INS
WHERE NAME IS NULL

방심하다가 == NULL 이런거만 안쓰면 틀리지 않는 문제다. 

 

 

3. 이름이 있는 동물의 아이디 - 레벨1

SELECT ANIMAL_ID 
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID

!= NULL 이런거만 안쓰면 된다. IS NOT NULL만 알면 풀 수 있는 문제

 

 

4. NULL 처리하기 - 레벨2

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE
FROM ANIMAL_INS 
ORDER BY ANIMAL_ID

 IFNULL만 알면 되는 문제

 

 

5. 나이 정보가 없는 회원 수 구하기 - 레벨1

SELECT COUNT(*) as USERS
FROM USER_INFO
WHERE AGE IS NULL

 

 

6. ROOT 아이템 구하기 - 레벨2

SELECT INFO.ITEM_ID, INFO.ITEM_NAME
FROM ITEM_TREE TREE LEFT JOIN ITEM_INFO INFO
ON  TREE.ITEM_ID = INFO.ITEM_ID
WHERE TREE.PARENT_ITEM_ID IS NULL

 

 

7. 업그레이드 할 수 없는 아이템 구하기 - 레벨3

SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID NOT IN
(
    SELECT DISTINCT PARENT_ITEM_ID 
    FROM ITEM_TREE
    WHERE PARENT_ITEM_ID IS NOT NULL    
)
ORDER BY ITEM_ID DESC

자신이 PARENT_ITEM_ID인 아이템이 하나도 없으면 최종 업그레이드 아이템이다. 천천히 종이에 쓰면서 계산하면 쉽게 생각할 수 있다.

  • 자식이 있는 아이템을 조회한다. (PAERNT_ITEM_ID로 포함되는 애들을 찾는다. DISTINCT로 중복도 제거해줬다)
  • 자식이 있는 ITEM_ID가 아닌 아이템 정보를 조회하여 출력한다

 

 

8. 잡은 물고기의 평균 길이 구하기 - 레벨1

SELECT ROUND(AVG(IFNULL(LENGTH, 10)), 2) AVERAGE_LENGTH
FROM FISH_INFO

ROUND, AVG, IFNULL을 알면 쉬운 문제다

 

 

728x90