Programmers 프로그래머스 코딩테스트 연습 - 중복 제거하기 (MYSQL)
문제 설명
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 |
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
예시
예를 들어 ANIMAL_INS 테이블이 다음과 같다면
ANIMAL_ID | ANIMAL_TYPE | DATETIME | INTAKE_CONDITION | NAME | SEX_UPON_INTAKE |
A562649 | Dog | 2014-03-20 18:06:00 | Sick | NULL | Spayed Female |
A412626 | Dog | 2016-03-13 11:17:00 | Normal | *Sam | Neutered Male |
A563492 | Dog | 2014-10-24 14:45:00 | Normal | *Sam | Neutered Male |
A513956 | Dog | 2017-06-14 11:54:00 | Normal | *Sweetie | Spayed Female |
보호소에 들어온 동물의 이름은 NULL(없음), *Sam, *Sam, *Sweetie입니다. 이 중 NULL과 중복되는 이름을 고려하면, 보호소에 들어온 동물 이름의 수는 2입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
count |
2 |
※ 컬럼 이름(위 예제에서는 count)은 일치하지 않아도 됩니다.
작성한 답
solution.sql
SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL;
설명
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성하는 문제입니다. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 쳐야하는 조건이 있습니다.
NAME이 NULL인 경우를 제외하는 조건을 걸어주고, 이름이 몇개인지 조회하는 문제이므로 중복되는 이름은 하나만 조회하면 동물 보호소에 들어온 동물의 이름이 몇 개 인지 알 수 있습니다.
FROM으로 ANIMAL_INS 테이블을 선택하고,
WHERE 에 조건으로 NAME IS NOT NULL을 걸어주면 NAME 이 NULL이 아닌 Tuple만을 선택합니다.
그리고 중복되는 이름을 하나만 뽑아내기 위해 NAME에 중복을 제거해주는 DISTINCT를 사용해 이름이 중복을 제거해준 뒤,
갯수를 세어주는 COUNT 사용하면 동물 보호소에 들어온 동물의 이름이 몇개인 지 알 수 있습니다.
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청 사항은 언제든지 말씀 해주세요!
감사합니다.
'Developer > Algorithm' 카테고리의 다른 글
Programmers 코딩테스트 연습 - 내적 (JavaScript) (0) | 2021.01.18 |
---|---|
Programmers 코딩테스트 연습 - 가장 큰 수 (JavaScript) (0) | 2020.10.17 |
Programmers 프로그래머스 코딩테스트 연습 - 동물 수 구하기 (MYSQL) (0) | 2020.09.20 |
Programmers 코딩테스트 연습 - 최솟값 구하기 (MYSQL) (0) | 2020.09.19 |
Programmers 월간 코드 챌린지 시즌1 - 두 개 뽑아서 더하기 (JavaScript) (0) | 2020.09.17 |
댓글