프로그래머스 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
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers][Python][Level 1] 모의고사 (0) | 2021.04.15 |
---|---|
[Programmers][Python][Level 1] 신규 아이디 추천 (0) | 2021.04.14 |
[Programmers][Python][Level 1] 크레인 인형뽑기 게임 (0) | 2021.04.13 |
[Programmers][Python][Level 1] 두 개 뽑아서 더하기 (0) | 2021.04.13 |
[Programmers][SQL][MySQL] 있었는데요 없었습니다 - JOIN (0) | 2021.04.08 |
[Programmers][SQL][MySQL] 없어진 기록 찾기 - JOIN (0) | 2021.03.30 |
[Programmers][SQL][MySQL] 입양 시각 구하기(2) - GROUP BY (0) | 2021.03.29 |
[Programmers][SQL][MySQL] 입양 시각 구하기(1) - GROUP BY (0) | 2021.03.29 |