문제 설명
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)은 일치하지 않아도 됩니다.
문제 풀이
DISTINCT를 통해 NAME에 있는 중복값들을 제거하고 COUNT로 개수를 반환합니다.
COUNT를 사용하면 NULL의 개수는 포함되지 않기때문에 "WHERE NAME IS NOT NULL" 조건이 필요하지 않습니다.
풀이 코드
SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS;
<출처>
https://programmers.co.kr/learn/courses/30/lessons/59408
반응형
'프로그래머스 > Level2' 카테고리의 다른 글
[프로그래머스][SQL] NULL 처리하기 (0) | 2022.02.19 |
---|---|
[프로그래머스][Java] Jaden 문자열 만들기 (0) | 2022.02.19 |
[프로그래머스][SQL] 동물 수 구하기 (0) | 2022.02.18 |
[프로그래머스][SQL] 최솟값 구하기 (0) | 2022.02.18 |
[프로그래머스][Java] N개의 최소공배수 (0) | 2022.02.17 |
댓글