코딩테스트/SQL
[코딩테스트] 프로그래머스 IS NULL 1 ~ 8
[dev] hiro
2024. 11. 5. 02:55
제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers SQL 고득점 Kit(IS NULL)입니다.
경기도에 위치한 식품창고 목록 출력하기
SELECT
WAREHOUSE_ID,
WAREHOUSE_NAME,
ADDRESS,
NVL(FREEZER_YN, 'N') AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기%'
ORDER BY WAREHOUSE_ID ASC
- 경기도에 위치한 공장을 통해 like를 사용합니다.
WHERE ADDRESS LIKE '경기%' - 냉동 여부가 null 것을 n으로 처리하기 위해 NVL을 사용합니다.
NVL(FREEZER_YN, 'N') AS FREEZER_YN - 창고 ID를 기준으로 오름차순 정렬합니다.
이름이 없는 동물의 아이디
SELECT
ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID ASC
- 이름이 없는 동물의 아이디를 찾기 위해 IS NULL을 사용합니다.
WHERE NAME IS NULL - ANIMAL_ID를 기준으로 오름차순 정렬합니다.
이름이 있는 동물의 아이디
SELECT
ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID;
- 이름이 있는 동물의 아이디를 찾기 위해 IS NOT NULL을 사용합니다.
WHERE NAME IS NOT NULL - ANIMAL_ID를 기준으로 오름차순 정렬합니다.
NULL 처리하기
SELECT
ANIMAL_TYPE,
NVL(NAME, 'No name'),
SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
- NAME이 null인 레코드를 No name으로 처리하기 위해 NVL을 사용합니다.
NVL(NAME, 'No name') - ANIMAL_ID를 기준으로 오름차순 정렬합니다.
나이 정보가 없는 회원 수 구하기
SELECT
COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE IS NULL
- 나이 정보가 없는 회원을 구하기 위해 IS NULL을 사용합니다.
WHERE AGE IS NULL - 회원 수를 구하기 위해 COUNT 함수를 이용합니다.
ROOT 아이템 구하기
SELECT
T.ITEM_ID,
I.ITEM_NAME
FROM ITEM_TREE T JOIN ITEM_INFO I
ON T.ITEM_ID = I.ITEM_ID
WHERE PARENT_ITEM_ID IS NULL
ORDER BY T.ITEM_ID
- ROOT ITEM을 구하기 위해 ITEM_TREE와 ITEM_INFO 테이블을 ITEM_ID를 기준으로 정렬합니다.
FROM ITEM_TREE T JOIN ITEM_INFO I ON T.ITEM_ID = I.ITEM_ID - PARENT_ITEM_ID가 null인 것이 root 아이템이므로 해당 레코드를 조회합니다.
WHERE PARENT_ITEM_ID IS NULL - ITEM_ID를 기준으로 오름차순 정렬합니다.
업그레이드 할 수 없는 아이템 구하기
SELECT
I.ITEM_ID,
I.ITEM_NAME,
I.RARITY
FROM ITEM_INFO I LEFT OUTER JOIN ITEM_TREE T
ON I.ITEM_ID = T.PARENT_ITEM_ID
WHERE T.PARENT_ITEM_ID IS NULL
ORDER BY I.ITEM_ID DESC
- 업그레이드 할 수 없는 아이템을 구하기 위해 ITEM_INFO ITEM_ID와 ITEM_TREE PARENT_ITEM_ID를 LEFT OUTER JOIN 후 PARENT_ITEM_ID가 null인 레코드를 조회합니다.
FROM ITEM_INFO I LEFT OUTER JOIN ITEM_TREE T ON I.ITEM_ID = T.PARENT_ITEM_ID
WHERE T.PARENT_ITEM_ID IS NULL - ITEM_ID를 기준으로 내림차순 정렬합니다.
잡은 물고기의 평균 길이 구하기
SELECT
ROUND(AVG(IFNULL(LENGTH, 10)), 2) AVERAGE_LENGTH
FROM FISH_INFO
- LENGTH가 null이면 10으로 처리하기 위해 IFNULL을 사용하여 평균값을 소수점 셋째자리에서 반올림합니다.
SELECT ROUND(AVG(IFNULL(LENGTH, 10)), 2) AVERAGE_LENGTH