[Programmers] (고득점KIT) GROUP BY - 동명 동물 수 찾기

Sierra·2022년 2월 4일
0
post-thumbnail

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

문제 설명

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

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
INTAKE_CONDITIONVARCHAR(N)FALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_INTAKEVARCHAR(N)FALSE

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

예시

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

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A396810Dog2016-08-22 16:13:00InjuredRavenSpayed Female
A377750Dog2017-10-25 17:17:00NormalLucySpayed Female
A355688Dog2014-01-26 13:48:00NormalShadowNeutered Male
A399421Dog2015-08-25 14:08:00NormalLucySpayed Female
A400680Dog2017-06-17 13:29:00NormalLucySpayed Female
A410668Cat2015-11-19 13:41:00NormalRavenSpayed Female

Raven 이름은 2번 쓰였습니다.
Lucy 이름은 3번 쓰였습니다
Shadow 이름은 1번 쓰였습니다.
따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

NAMECOUNT
Lucy3
Raven2

Solution

SELECT NAME, COUNT(NAME) AS 'Count' 
FROM ANIMAL_INS 
GROUP BY NAME 
HAVING COUNT(NAME) > 1 
ORDER BY NAME

GROUP BY 후 HAVING이 들어갔는데 WHERE과 헷깔릴 수 있다.
WHERE는 GROUP 화 하기전의 조건, HAVING은 그룹화 후 의 조건이라 생각하면 쉽다.
GROUP화 했을 때 NAME을 COUNT했을 때 1보다 큰 NAME이라면 동명 동물이 있다는 의미이다.

profile
블로그 이전합니다 : https://swj-techblog.vercel.app/

0개의 댓글