[프로그래머스] 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 처리를 하지 않고 활용할 수 있을 것 같다.
'PS > SQL' 카테고리의 다른 글
[프로그래머스] SQL Lv.3 - 조건에 맞는 사용자 정보 조회하기 (0) | 2024.03.18 |
---|---|
[프로그래머스] SQL Lv.3 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2024.02.19 |
[프로그래머스] SQL Lv.2 - 루시와 엘라 찾기 (0) | 2024.01.29 |
[프로그래머스] SQL Lv.2 - 고양이와 개는 몇마리 있을까(Oracle) (1) | 2024.01.10 |
[프로그래머스] SQL Lv.2 - 최솟값 구하기(Oracle) (0) | 2024.01.10 |
블로그의 정보
Hi Rev
Rev_