코딩 테스트 [C#, MySQL]/프로그래머스 (Lv2)

[MYSQL][프로그래머스] 동명 동물 수 찾기

스누누피 2025. 5. 20. 08:22

프로그래머스 > 코딩테스트 연습 > GROUP BY > 동명 동물 수 찾기

https://school.programmers.co.kr/learn/courses/30/lessons/59041

 

📢 문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

Column 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문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

 

예시

예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A396810 Dog 2016-08-22 16:13:00 Injured Raven Spayed Female
A377750 Dog 2017-10-25 17:17:00 Normal  Lucy Spayed Female
A355688 Dog 2014-01-26 13:48:00 Normal Shadow Neutered Male
A399421 Dog  2015-08-25 14:08:00 Normal  Lucy  Spayed Female
A400680  Dog 2017-06-17 13:29:00 Normal  Lucy  Spayed Female
A410668  Cat  2015-11-19 13:41:00 Normal  Raven Spayed Female
  • Raven 이름은 2번 쓰였습니다.
  • Lucy 이름은 3번 쓰였습니다
  • Shadow 이름은 1번 쓰였습니다.

따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

NAME COUNT
Lucy 3
Raven 2

 


💻 소스코드

SELECT NAME
     , COUNT(ANIMAL_ID) AS COUNT
  FROM ANIMAL_INS
 WHERE NAME IS NOT NULL
 GROUP BY NAME
HAVING COUNT(ANIMAL_ID) > 1
 ORDER BY 1;

 

기본 SQL문이 전부 들어가있는 문제라서 가져와봤다.

코드 실행 했을때 정답 처럼 보여도 문제가 없어도 문제에서 요구하는 요구사항을 모두 만족해야 한다.

때문에 이름이 없는 동물을 집계하지 않고(WHERE), 이름 순으로 정렬하는 것(ORDER BY)을 빼먹으면 오답 처리 된다.

 

💡 코드실행

NAME COUNT
Lucy 3
Raven 2

 

 

※ 참고 사이트

-


관련 포스팅

-