[프로그래머스] SQL 고득점 Kit - IS NULL편

boomboom·2021년 7월 27일
0
post-thumbnail

안녕하세요. 붐붐입니다.

이번 포스팅에서는 제가 풀어본 프로그래머스 SQL 고득점 Kit - IS NULL 문제들의 풀이를 공유해보고자 합니다.


출처: 프로그래머스 코딩테스트 연습 - SQL 고득점 Kit

https://programmers.co.kr/learn/challenges?tab=sql_practice_kit


사용되는 테이블

ANIMAL_INS

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
INTAKE_CONDITIONVARCHAR(N)FALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_INTAKEVARCHAR(N)FALSE
  • ANIMAL_ID: 동물의 아이디
  • ANIMAL_TYPE: 생물 종
  • DATETIME: 보호 시작일
  • INTAKE_CONDITION: 보호 시작 시 상태
  • NAME: 이름
  • SEX_UPON_INTAKE: 성별 및 중성화 여부

ANIMAL_OUTS

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_OUTCOMEVARCHAR(N)FALSE
  • ANIMAL_ID: 동물의 아이디
  • ANIMAL_TYPE: 생물 종
  • DATETIME: 입양일
  • NAME: 이름
  • SEX_UPON_OUTCOME: 성별 및 중성화 여부

[1번] 이름이 없는 동물의 아이디

동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.
예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A368930Dog2014-06-08 13:20:00NormalNULLSpayed Female
A524634Dog2015-01-02 18:54:00Normal*BelleIntact Female
A465637Dog2017-06-04 08:17:00Injured*CommanderNeutered Male

이름이 없는 채로 들어온 동물의 ID는 A368930입니다. 따라서 SQL을 실행하면 다음과 같이 출력되어야 합니다.

ANIMAL_ID
A368930

풀이

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID ASC;

[2번] 이름이 있는 동물의 아이디

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

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A434523Cat2015-11-20 14:18:00NormalNULLSpayed Female
A562649Dog2014-03-20 18:06:00SickNULLSpayed Female
A524634Dog2015-01-02 18:54:00Normal*BelleIntact Female
A465637Dog2017-06-04 08:17:00Injured*CommanderNeutered Male

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

ANIMAL_ID
A465637
A524634

풀이

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NOT NAME IS NULL
ORDER BY ANIMAL_ID ASC;

[3번] NULL 처리하기

입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.
예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A350276Cat2017-08-13 13:50:00NormalJewelSpayed Female
A350375Cat2017-03-06 15:01:00NormalMeoNeutered Male
A368930Dog2014-06-08 13:20:00NormalNULLSpayed Female

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

ANIMAL_TYPENAMESEX_UPON_INTAKE
CatJewelSpayed Female
CatMeoNeutered Male
DogNo nameSpayed Female

풀이

SELECT ANIMAL_TYPE, IF(ISNULL(NAME), 'No name', NAME) AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

profile
오늘도 붐붐

0개의 댓글