중복 제거하기
https://school.programmers.co.kr/learn/courses/30/lessons/59408
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL문을 작성해주세요.
이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
▼ DISTINCT 컬럼명, COUNT(컬럼명)
SELECT COUNT(DISTINCT NAME) count
FROM ANIMAL_INS
중복되는 이름을 하나로 치게 만들려면 DISTINCT를 사용해야 함.
이 문제에서는 '이름이 NULL인 경우를 집계하지 않아야 한다'는 조건도 있음
그런데
이 쿼리문이 조건절에 IS NOT NULL을 넣어주지 않고도 정답인 이유는,
DISTINCT가 NULL인 행들도 하나의 NULL로 만들어주는데
COUNT(컬럼명)으로 쓰면 NULL을 제외하고 세주는 특성이 있어서 NULL값이 제외됐기 때문임!
▼ WHERE절 IN()함수 서브쿼리
SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS
WHERE NAME IN (SELECT NAME
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
)
원소함수 IN()과 서브쿼리 조합으로 정답을 구한 사람도 있었음
WHERE NAME IS NOT NULL 대신
서브쿼리에 NAME만 조회해서 그 NAME이 '존재하는' 행만 뽑아내게 만든 것 같음
[참고 게시글]
DISTINCT와 GROUP BY절의 차이
[IT 교육/SQL] - SQL | DISTINCT 탐구_뜻밖의 여정 | Group by절과의 사용법 차이
SQL | DISTINCT 탐구_뜻밖의 여정 | Group by절과의 사용법 차이
0. DISTINCT를 Group by절처럼 사용해도 되는 걸까? 먼저 Group by와 DISTINCT가 무엇인지 간단히 살펴보자. ▶ Group by절 기본구조 및 사용법 : 카테고리 별(소그룹 별) 데이터 결과값을 보고 싶을 때 Group by
nasena.tistory.com
'코딩테스트 > SQL 코드카타' 카테고리의 다른 글
SQL 프로그래머스 | 동명 동물 수 찾기 | GROUP BY와 HAVING절 | COUNT(컬럼명)과 COUNT(*)의 차이 | COUNT(1) (0) | 2024.01.26 |
---|---|
SQL 프로그래머스 | 동물의 수 | COUNT( )함수 | WHERE 1=1 (1) | 2024.01.25 |
SQL 프로그래머스 | 동물의 아이디와 이름 | ORDER BY (0) | 2024.01.25 |
SQL 프로그래머스 | 역순 정렬하기 | ORDER BY ~ DESC (0) | 2024.01.25 |
SQL 프로그래머스 | 이름이 '있는' 동물의 아이디 | IS NOT NULL (1) | 2024.01.25 |
댓글