프로그래머스 SQL 고득점 킷 중복 제거하기

hysss·2023년 2월 16일
0

SUM, MAX, MIN - 중복 제거하기

문제 분석

동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요.
이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.

코드

SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS

문제 풀이

DISTINCT와 COUNT()를 이용하는 문제였다.

DISTINCT는 NULL을 아래와 같이 처리한다.

  • SELECT DISTINCT NAME: NULL값을 포함하고 중복값을 제외하여 결과 출력
  • SELECT COUNT(NAME): NULL값을 제외하고 개수 출력
  • SELECT COUNT(DISTINCT NAME): NULL값, 중복값을 제외하고 개수 출력
  • SELECT COUNT(*): NULL값을 포함해서 개수 출력
  • SELECT COUNT(IFNULL(NAME, 0)): NULL값을 0으로 대체하여 포함하고 개수 출력

DISTINCT는 NULL을 포함해서 처리하지만, COUNT는 NULL을 제외하고 처리한다(COUNT(*)인 경우에는 NULL 포함).

SELECT절에 여러 개의 컬럼이 있을 때, DISTINCT는 하나의 컬럼에만 적용하는 것은 불가능하다. SELECT절에서 하나의 컬럼만 사용한다면 할 수 있지만, 여러 개의 컬럼을 사용하면 컬럼을 모두 조합해서 나온 중복 결과 중 하나만 출력한다.

profile
매일 매일 규칙적으로

0개의 댓글