프로그래머스/SQL 고득점 Kit
[프로그래머스/SQL] 동명 동물 수 찾기 (feat. GROUP BY, HAVING)
개발자_조이킴
2022. 3. 8. 14:37
Problem. 동명 동물 수 찾기
Link.
https://programmers.co.kr/learn/courses/30/lessons/59041
코딩테스트 연습 - 동명 동물 수 찾기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
Description.
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.
ANIMAL_INS 테이블 구조는 다음과 같습니다.
- ANIMAL_ID: 동물의 아이디
- ANIMAL_TYPE: 생물 종
- DATETIME: 보호 시작일
- INTAKE_CONDITION: 보호 시작 시 상태
- NAME: 이름
- SEX_UPON_INTAKE: 성별 및 중성화 여부
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요.
※ 이름이 없는 동물은 집계에서 제외하며, 이름 순으로 조회해주세요.
Key Point.
GROUP BY는 데이터를 특정 컬럼을 기준으로 그룹화하는 명렁어이다.
일반적으로 GROUP BY는 유형별로 개수를 알고 싶을 때 사용되며, 이때 COUNT와 함께 사용된다.
HAVING은 GROUP BY를 통해 조회된 데이터에 조건을 붙일 때 사용된다.
본 문제에서는 NAME을 기준으로 그룹화된 데이터 중 2회 이상 사용된 NAME만 조회해야만 하므로
GROUP BY 이후
HAVING COUNT(NAME) >= 2
를 적용해서 문제에서 요구하는 SQL문을 구현했다.
My Answer.
SELECT NAME, COUNT(*)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME