Rev Notebook

[프로그래머스] SQL Lv.2 - 동명 동물 수 찾기(Oracle)

by Rev_

GROUP BY와 HAVING절을 활용하는 문제이다.

-- 두 번 이상 쓰인 동물 이름과 해당 횟수 조회
-- 이름이 없는 동물은 집계 제외, 이름 순 정렬
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) > 1
ORDER BY NAME

쿼리의 실행순서는 FROM(+JOIN) - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 이다.

해당 순서에 유의하며 쿼리를 작성해야 한다.

 

COUNT(*) 과 COUNT(NAME) 의 차이

이 문제에서 제시한 주요한 조건 중 하나는 이름이 없는 동물(=NAME이 NULL)인 동물은 집계를 제외하는 것이었다 !

COUNT(NAME)은 NAME 컬럼이 NULL인 값은 제외하고 집계한다.

하지만 COUNT(*)은 모든 컬럼을 집계 하게 된다.

 

이러한 차이를 활용한다면, 집계 시에 따로 NULL 처리를 하지 않고 활용할 수 있을 것 같다.

 

블로그의 정보

Hi Rev

Rev_

활동하기