[프로그래머스/SQL 고득점 Kit] IS NULL
2024. 9. 17. 19:48ㆍ코딩 테스트(Coding Test)/프로그래머스
경기도에 위치한 식품창고 목록 출력하기
나의 답)
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') AS 'FREEZER_YN'
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID ASC;
# FOOD_WAREHOUSE에서
# '경기도'에 위치한 창고의
# ID, 이름, 주소, 냉동시설 여부 조회
# if) 냉동시설 == NULL -> 'N'으로 출력
# ID ASC
이름이 없는 동물의 아이디
나의 답)
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID ASC;
# ANIMAL_INS에서
# 이름 == NULL인
# ID 조회
# ID ASC
이름이 있는 동물의 아이디
나의 답)
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID ASC;
# ANIMAL_INS에서
# 이름이 있는 동물의
# ID 조회
# ID ASC
NULL 처리하기
나의 답)
SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;
# ANIMAL_INS에서
# 생물 종, 이름, 성별 및 중성화 여부 조회
# ID ASC
# if) 이름 == NULL -> 'No name'으로 출력
나이 정보가 없는 회원 수 구하기
나의 답)
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE IS NULL;
# USER_INFO에서
# 나이 == NULL인 회원이
# 몇 명인지 출력 -> USERS
ROOT 아이템 구하기
나의 답1)
SELECT ii.ITEM_ID, ii.ITEM_NAME
FROM ITEM_INFO ii, ITEM_TREE it
WHERE it.PARENT_ITEM_ID IS NULL AND ii.ITEM_ID = it.ITEM_ID
ORDER BY ITEM_ID ASC;
# ITEM_INFO, ITEM_TREE에서
# ROOT 아이템의
# ID, 아이템명 출력
# ID ASC
나의 답2)
SELECT ii.ITEM_ID, ii.ITEM_NAME
FROM ITEM_INFO ii
JOIN ITEM_TREE it ON ii.ITEM_ID = it.ITEM_ID
WHERE it.PARENT_ITEM_ID IS NULL
ORDER BY ITEM_ID ASC;
# ITEM_INFO, ITEM_TREE에서
# ROOT 아이템의
# ID, 아이템명 출력
# ID ASC
업그레이드 할 수 없는 아이템 구하기
나의 답1)
SELECT ii.ITEM_ID, ii.ITEM_NAME, ii.RARITY
FROM ITEM_INFO ii
WHERE ii.ITEM_ID NOT IN (
SELECT it.PARENT_ITEM_ID
FROM ITEM_TREE it
WHERE it.PARENT_ITEM_ID IS NOT NULL
)
ORDER BY ii.ITEM_ID DESC;
# ITEM_INFO, ITEM_TREE에서
# 더 이상 업그레이드할 수 없는 아이템의
# ID, 아이템명, 아이템의 희귀도 출력
# ID DESC
나의 답2)
SELECT ii.ITEM_ID, ii.ITEM_NAME, ii.RARITY
FROM ITEM_INFO ii
LEFT JOIN ITEM_TREE it ON ii.ITEM_ID = it.PARENT_ITEM_ID
WHERE it.PARENT_ITEM_ID IS NULL
ORDER BY ii.ITEM_ID DESC;
# ITEM_INFO, ITEM_TREE에서
# 더 이상 업그레이드할 수 없는 아이템의
# ID, 아이템명, 아이템의 희귀도 출력
# ID DESC
* 업그레이드가 불가능한 아이템
: ITEM_TREE 테이블에서 PARENT_ITEM_ID로 참조되지 않는 아이템들이 업그레이드가 불가능한 아이템이다.
잡은 물고기의 평균 길이 구하기
나의 답1)
SELECT ROUND(AVG(CASE WHEN LENGTH > 10 THEN LENGTH ELSE 10 END), 2) AS AVERAGE_LENGTH
FROM FISH_INFO;
# FISH_INFO에서
# 평균 길이 출력 -> AVERAGE_LENGTH
# 소수점 3째자리에서 반올림
# 10cm 이하인 물고기들은 10cm로 취급
나의 답2)
SELECT ROUND(AVG(IF(LENGTH IS NULL, 10, IF(LENGTH <= 10, 10, LENGTH))), 2) AS AVERAGE_LENGTH
FROM FISH_INFO;
# FISH_INFO에서
# 평균 길이 출력 -> AVERAGE_LENGTH
# 소수점 3째자리에서 반올림
# 10cm 이하인 물고기들은 10cm로 취급
'코딩 테스트(Coding Test) > 프로그래머스' 카테고리의 다른 글
[프로그래머스/알고리즘 고득점 Kit/JAVA] 정렬 (2) | 2024.09.18 |
---|---|
[프로그래머스/SQL 고득점 Kit] SUM, MAX, MIN (0) | 2024.09.17 |
[프로그래머스/SQL 고득점 Kit] SELECT (1) | 2024.09.17 |
[java] 프로그래머스 문자열 반복해서 출력하기 / .repeat() (0) | 2024.04.10 |
[프로그래머스/js] 직각삼각형 출력하기 (0) | 2023.04.03 |