문제
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
distinct를 사용하여 중복을 제거했다. '이름'의 중복을 제거해야하기 때문에 name 앞에 썼다.
distinct count(name) 를 쓰면

이 상태에서 중복을 제거하기 때문에 제대로 수행되지 않는다
SELECT count(distinct name) as count
from animal_ins
where name is not null
-- 개선한 코드 --
SELECT count(distinct name)
from animal_ins
집계함수 테이블의 입력값이 없지 않는 이상 쿼리문을 돌렸을 때 값이 공집합이면 0을 자동으로 호출해주고,
도중에 NULL 을 발견하면 그것은 집계에 넣지 않는다. 즉 NULL은 자동으로 빼준다!
'SQL' 카테고리의 다른 글
| SQL 프로그래머스 59405 상위 n개 레코드 (0) | 2024.01.18 |
|---|---|
| SQL 프로그래머스 131563 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.01.18 |
| SQL 프로그래머스 131115 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2024.01.17 |
| SQL 프로그래머스 59415 최댓값 구하기/59038 최솟값 구하기 (0) | 2024.01.17 |
| SQL 프로그래머스 131528 나이 정보가 없는 회원 수 구하기 (0) | 2024.01.17 |