프로그래머스 SQL 고득점 킷 동명 동물 수 찾기

hysss·2023년 2월 19일
0

GROUP BY - 동명 동물 수 찾기

문제 분석

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

코드

SELECT NAME, COUNT(*)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(*)>=2
ORDER BY NAME

문제 풀이

"두 번 이상 쓰인 이름, 이름이 없는 동물은 집계에서 제외" 라는 조건을 수행하기 위해서 HAVING절을 사용하는 문제였다.

HAVING절GROUP BY절에서 Grouping한 group에 대해서 필터링을 수행하는 절이다.
GROUP BY를 수행하기 전에 조건을 체크하는 WHERE절과 다르게, HAVING절은 GROUP BY를 수행한 다음에 조건을 체크한다.

이름이 없는 동물은 집계에서 제외해야 하기 때문에 WHERE 절에서 체크했고,
두 번 이상 쓰인 이름은 이름 별로 Grouping을 한 뒤 집계해야 하기 때문에 HAVING 절에서 체크했다.

참고

쿼리문 수행 순서
: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

profile
매일 매일 규칙적으로

0개의 댓글