본문 바로가기
코딩테스트/Programmers

[Programmers][SQL][MySQL] IS NULL

by codeok 2021. 3. 29.
반응형

프로그래머스 SQL 고득점 KIT 연습 문제를 학습하며 정리했습니다.

 

1. 이름이 없는 동물의 아이디

동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요.

단, ID는 오름차순 정렬되어야 합니다.

 

코딩테스트 연습 - 이름이 없는 동물의 아이디

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAME TYPE NULLABLE
     
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

 

예시

예를 들어 ANIMAL_INS 테이블이 다음과 같다면

A368930 Dog 2014-06-08 13:20:00 Normal NULL Spayed Female
A524634 Dog 2015-01-02 18:54:00 Normal *Belle Intact Female
A465637 Dog 2017-06-04 08:17:00 Injured *Commander Neutered Male

 

 

풀이

  • 해당 코드는 간단하게 ANIMAL_ID 테이블의 NAME 컬럼이 IS NULL 즉 null이 성립하면 ANIMAL_ID를 오름차순 정렬해서 출력하는 쿼리입니다.
  • ORDER BY는 정렬인데 ASC이 기본 값이지만, 명시적으로 사용하겠습니다.
-- 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요.
-- 단, ID는 오름차순 정렬되어야 합니다.
SELECT 
    ANIMAL_ID
FROM 
    ANIMAL_INS
WHERE 
    NAME IS NULL
ORDER BY 
	ANIMAL_ID ASC

 

2. 이름이 있는 동물의 아이디

동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요.

단, ID는 오름차순 정렬되어야 합니다.

 

 

코딩테스트 연습 - 이름이 있는 동물의 아이디

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

출력 결과

이름이 있는 동물의 ID는 A524634와 A465637입니다. 따라서 SQL을 실행하면 다음과 같이 출력되어야 합니다.

ANIMAL_ID
 
A465637
A524634

 

풀이

해당 코드는 간단하게 ANIMAL_ID 테이블의 NAME 컬럼이 IS NOT NULL 즉 null이 아니라 존재하면 ANIMAL_ID를 오름차순 정렬해서 출력하는 쿼리입니다.

-- 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요.
-- 단, ID는 오름차순 정렬되어야 합니다.
SELECT 
    ANIMAL_ID
FROM 
    ANIMAL_INS
WHERE 
    NAME IS NOT NULL 
ORDER BY
    ANIMAL_ID ASC

 

3. NULL 처리하기

입양 게시판에 동물 정보를 게시하려 합니다.

동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요.

이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.

 

 

코딩테스트 연습 - NULL 처리하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

출력 결과

마지막 줄의 개는 이름이 없기 때문에, 이 개의 이름은 "No name"으로 표시합니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

ANIMAL_TYPE NAME SEX_UPON_INTAKE
     
Cat Jewel Spayed Female
Cat Meo Neutered Male
Dog No name Spayed Female

 

풀이

  • Mysql에서 IFNULL을 사용해서 만약 NAME 컬럼에 NULL이면 "No name"이라고 나오게 가능합니다.
-- 입양 게시판에 동물 정보를 게시하려 합니다.
-- 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요.
-- 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 
-- 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.
SELECT 
    ANIMAL_TYPE, IFNULL(NAME, "No name"), SEX_UPON_INTAKE
FROM
    ANIMAL_INS

 

반응형