https://school.programmers.co.kr/learn/courses/30/lessons/59408

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드설명

DISTINCT + COUNT + IS NOT NULL을 활용합니다.

 

WHERE NAME IS NOT NULL을 통해 NULL이 아닌 이름 중에서 DISTINCT를 통해 중복을 제거하고, COUNT로 개수를 세서 출력합니다.

 

다른방법으로는, 

만약 COUNT(*) 를 한다면, 해당 테이블의 PK 레코드 기준, 즉 ANIMAL_ID 의 개수를 세기에 레코드셋의 필드값이 NULL이어도 세지만,

COUNT(NAME)을 할경우, NAME이 NULL일경우는 무시합니다.

코드

SELECT COUNT(DISTINCT(NAME)) AS count
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;
-- COUNT는 원래 NULL인것을 세지 않습니다.
-- DISTINCT를 통해서 중복되는 값은 세지 않습니다.
-- 이러한 집계함수는 이미 만들어진 테이블을 기준으로 작동합니다.
SELECT COUNT(DISTINCT(AI.NAME))
FROM ANIMAL_INS AS AI

 

ORACLE

SELECT COUNT(DISTINCT AI.NAME)
FROM ANIMAL_INS AI
WHERE AI.NAME IS NOT NULL

 

AI.NAME을 사용할경우 NULL일경우는 자동으로 집계하지 않습니다.

SELECT COUNT(DISTINCT AI.NAME)
FROM ANIMAL_INS AI
-- WHERE AI.NAME IS NOT NULL

+ Recent posts