[프로그래머스 - SQL] - 중복 제거하기

링크

중복 제거하기

문제설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

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

예시

풀이

  • 동물의 이름 갯수를 조회하는 것이므로, NAME에 COUNT 함수를 적용할 것입니다.

  • 컬럼 내 같은 데이터가 존재하면, 중복을 제거하기 위해 DISTINCT를 사용합니다.

  • 중복 데이터를 제거하고자 하는 열은 NAME 이므로, 옆에 DISTINCT 키워드를 붙입니다.

  • NULL 값이 아닌 것을 비교하는 방법은 IS NOT NULL 을 붙입니다.

[DISTINCT 사용 시 주의할 점]

  • DISTINCT 키워드는 옆에 온 모든 컬럼을 고려하여 중복 제거를 진행합니다.
    즉, SELECT DISTINCT COL1, COL2 …를 진행할 경우

  • COL1과 COL2 값이 모두 동일한 row들을 1개로 칩니다.
    다시 말하면, DISTINCT 는 SELECT 구문에 여러 컬럼명이 올 때, 그 중 한 개에 대해서만 적용할 수 없다는 말이 됩니다.

Code

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

좋은 웹페이지 즐겨찾기