카테고리 없음

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

glorypang 2025. 3. 28. 23:49
728x90
반응형
SMALL

📌 문제 정보

  • 출처: 문제 링크
  • 난이도: ⭐
  • 문제 유형: DISTINCT
  • 사용 언어: SQL

🔍 문제 설명

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

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

 

보호소에 들어온 동물의 이름은 NULL(없음), *Sam, *Sam, *Sweetie입니다. 이 중 NULL과 중복되는 이름을 고려하면, 보호소에 들어온 동물 이름의 수는 2입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.


💡 풀이 노트

구문 의미
`COUNT(*)` 전체 행 수 (NULL 포함 여부 상관 없음)
`COUNT(NAME)` `NAME` 컬럼이 NULL이 아닌 행 수
`COUNT(DISTINCT(NAME))` 중복되지 않는 `NAME` 값의 개수만 계산

 

1. DISTINCT 개념

  • `DISTINCT`는 중복된 값을 제거하고 고유한 값만 추출할 때 사용하는 키워드
  • SELECT 절에서만 사용 가능하며, GROUP BY 없이도 중복 제거가 가능
SELECT DISTINCT 컬럼명
FROM 테이블명;

 

2. 주의사항

  • `DISTINCT`는 SELECT 절의 여러 컬럼과 함께 사용할 수 있음
    • 이 경우 전체 컬럼 조합이 중복 여부 판단 기준이 됨
SELECT DISTINCT(NAME, DATETIME)
FROM ANIMAL_INS;

🚀 코드 (Java)

SELECT COUNT(DISTINCT(NAME)) AS COUNT
FROM ANIMAL_INS

🖥 실행 결과

출력
COUNT
96

 


📌 깃허브 코드 저장소: https://github.com/glorypang/CodingTest

 

 

 

728x90
반응형
LIST