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
'SQL > 프로그래머스' 카테고리의 다른 글
[SQL][프로그래머스] 이름에 el이 들어가는 동물 찾기 - LIKE + LOWER + UPPER + REGEXP(정규표현식) MYSQL (0) | 2024.04.04 |
---|---|
[SQL][프로그래머스] 동물 수 구하기 - COUNT MYSQL ORACLE (0) | 2024.04.04 |
[SQL][프로그래머스] 중성화 여부 파악하기 - CASE WHEN + LIKE MYSQL ORACLE (0) | 2024.04.03 |
[SQL][프로그래머스] NULL 처리하기 - CASE WHEN + IS NULL + NVL MYSQL ORACLE (0) | 2024.04.03 |
[SQL][프로그래머스] 입양 시각 구하기(1) - HOUR MYSQL ORACLE (0) | 2024.04.02 |