본문 바로가기
SQL 문제 풀기/1. 프로그래머스 SQL : 2023.12.17~2024.2.29

<프로그래머스 6> 이름이 있는 동물의 아이디(Lv.1)

by HYEHYE_SON 2023. 12. 22.
728x90

 

프로그래머스에서 제공하는 SQL문제 매일 풀기 챌린지


 

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_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

 

 

본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.

 


정답

select animal_id
   from animal_ins
    where name IS NOT NULL
    order by animal_id asc;

 

 

해설해보기

1. 동물의 아이디를 조회하는 것이므로 select animal_id
2. 테이블 명 지정
3. where절에 조건을 작성하는데,
   동물 중 이름이 있는 동물의 id만 조회하는 것이므로
   동물의 이름의 값이 null인 동물은 제외하고 출력해야한다.

   따라서 name != null
   이라고 생각할 수 있는데, null 조건은
   [컬럼명] IS NULL 또는 [컬럼명] IS NOT NULL로 조건을 줘야한다.

4. ANIMAL_ID를 기준으로 오름차순 정렬

 

 

결과 출력

이하 생략

/* 전체 행 수 확인하기 */
select count(*)
	from animal_ins;
    
  -- 결과 전체 행 수는 100개

/* 이름이 not null인 동물의 수 확인하기 */
select count(*)
	from animal_ins
    where name is not null;
    
   -- 결과 행 개수는 99개

/* 이름이 null인 동물의 수 확인하기 */
select count(*)
	from animal_ins
    where name is null;
    
   -- 결과 행 개수는 1개
    
!!따라서 맞게 출력되고 있는 것을 알 수 있다!!

출처 : 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

반응형