비교적 간단한 문제들
https://school.programmers.co.kr/learn/courses/30/parts/17045
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. 경기도에 위치한 식품창고 목록 출력하기
-- 코드를 입력하세요
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, "N") FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE "경기도%" ORDER BY 1;
- IFNULL() 문제
2. 이름이 없는 동물의 아이디
-- 코드를 입력하세요
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY 1;
- IS NULL/IS NOT NULL 문제
3. 이름이 있는 동물의 아이디
-- 코드를 입력하세요
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY 1;
4. NULL 처리하기
-- 코드를 입력하세요
SELECT ANIMAL_TYPE, IFNULL(NAME, "No name"), SEX_UPON_INTAKE FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
- SELECT 절에 없는 컬럼으로 정렬이 되는구만..
5. 나이 정보가 없는 회원 수 구하기
-- 코드를 입력하세요
SELECT COUNT(*) USERS FROM USER_INFO WHERE AGE IS NULL;
6. ROOT 아이템 구하기
-- 코드를 작성해주세요
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 II.ITEM_ID;
7. 업그레이드 할 수 없는 아이템 구하기
-- 코드를 작성해주세요
SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID NOT IN (SELECT PARENT_ITEM_ID FROM ITEM_TREE WHERE PARENT_ITEM_ID IS NOT NULL)
ORDER BY 1 DESC;
# SELECT PARENT_ITEM_ID FROM ITEM_TREE
- NOT IN() 을 수행할 때, 서브 쿼리에 NULL값이 포함되어 있으면 전체 쿼리가 반환되지 않을 수 있다.
- 위와 같이 서브 쿼리에 IS NOT NULL 조건 추가
SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO II
WHERE NOT EXISTS (
SELECT 1
FROM ITEM_TREE IT
WHERE II.ITEM_ID = IT.PARENT_ITEM_ID
)
ORDER BY 1 DESC;
- 또는 위와 같이 NOT EXISTS()를 이용하면 NULL 값이 존재해도 알맞게 반환된다.
- NOT EXISTS() 연산은 반환 데이터가 아닌 TRUE/FALSE, 반환값이 한 줄이라도 존재하는지를 검사하는 연산이다. 따라서 WHERE 조건을 만족할 때만 TRUE가 되도록 해야 한다.
8. 잡은 물고기의 평균 길이 구하기
-- 코드를 작성해주세요
SELECT ROUND(AVG(IFNULL(LENGTH, 10)), 2) AVERAGE_LENGTH
FROM FISH_INFO;
- 집계함수안에 IFNULL() 함수(또는 IF문 등)를 사용할 수 있다.
회고
NULL 다루기는 쉬워서 금방 끝났다.
얼마 없는 노트북 밧데리가 끝나기 전에 해치우기....
그래도 NOT IN의 조건은 새롭게 알았다.
'코딩테스트' 카테고리의 다른 글
[MySQL] 프로그래머스 SQL 고득점 Kit - String, Date (1) | 2025.02.23 |
---|---|
[MySQL] 프로그래머스 SQL 고득점 Kit - JOIN (1) | 2025.02.22 |
[MySQL] 프로그래머스 SQL 고득점 Kit - GROUP BY (1) | 2025.02.21 |
[MySQL] 프로그래머스 SQL 고득점 Kit - SUM, MAX, MIN (0) | 2025.02.21 |
[MySQL] 프로그래머스 SQL 고득점 Kit - SELECT (0) | 2025.02.20 |