코딩 테스트 [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 |
※ 참고 사이트
-
관련 포스팅
-