CodingSpace

[프로그래머스/SQL] 동명 동물 수 찾기 (feat. GROUP BY, HAVING) 본문

프로그래머스/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문을 작성해주세요.

※ 이름이 없는 동물은 집계에서 제외하며, 이름 순으로 조회해주세요.

 

예) ANIMAL_INS 테이블


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

 

Comments