
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문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
이 문제는 GROUP BY 절로 NAME 컬럼으로 그룹을 만든 후, 각 NAME에 속하는 행의 수를 구하는 문제이다.
이때, WHERE 절에 NAME 값이 NULL이 아닌 값만을 세도록 조건을 추가하고,
HAVING 절에선 중복되는 이름이 2개 이상인 행만을 걸러내도록 코드를 작성하면 된다.
SELECT NAME
,COUNT(NAME) AS COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP
BY NAME
HAVING COUNT(NAME) >= 2
ORDER
BY NAME ASC;
GROUP BY를 사용하는 기본적인 문제였다.
https://school.programmers.co.kr/learn/courses/30/lessons/59041