SQL/프로그래머스

[프로그래머스/SQL] 이름이 있는 동물의 아이디(MySQL)

류진주 2021. 10. 29. 19:07

https://programmers.co.kr/learn/courses/30/lessons/59407

 

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

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

동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.

예시

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

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A434523 Cat 2015-11-20 14:18:00 Normal NULL Spayed Female
A562649 Dog 2014-03-20 18:06:00 Sick 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

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

ANIMAL_ID
A465637
A524634

[풀이]

https://developearl99.tistory.com/132

위의 문제와 다른 점은 위의 문제는 이름이 없는 동물을 조회하는 것이고 해당 문제는 이름이 있는 동물을 조회한다는 것이다. 그렇기에 WHERE절의 조건만 변경해주면 된다.

이름이 있는 동물은 NAME 컬럼 값이 NULL이 아닐 것이다. 그러므로 NAME이 NULL이 아닌 데이터를 조회하면 된다.

그렇기에 WHERE NAME IS NOT NULL 로 작성해주면 된다.

위의 문제에서도 언급했듯이 NULL은 =이 아닌 IS를 사용한다. NULL이 아닌 것을 조회하고 싶으면 IS NOT NULL을 사용하면 된다.

 

[코드]

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL