CODING TEST/MySQL

Lv2 - 중복 제거하기

iamyuunzo 2025. 7. 21. 14:26

📌 문제 정보

- 문제 이름 : 프로그래머스 - (SUM, MAX, MIN) 중복 제거하기

- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59408

 

 

 

📌 문제 요약

- ANIMAL_INS 테이블 : ANIMAL_ID(동물의 아이디), ANIMAL_TYPE(생물 종), DATETIME(보호 시작일), INTAKE_CONDITION(보호 시작 시 상태), NAME(이름), SEX_UPON_INTAKE(성별 및 중성화 여부)

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

 

예시)

ANIMAL_ID ANIMAL_TYPE  DATETIME  INTAKE_CONDITION  NAME  SEX_UPON_INTAKE
A562649  Dog 2014-03-20 18:06:00 Sick  NULL  Spayed Female
A412626  Dog 2016-03-13 11:17:00 Normal  *Sam  Neutered Male
A563492  Dog 2014-10-24 14:45:00 Normal  *Sam  Neutered Male
A513956  Dog 2017-06-14 11:54:00 Normal  *Sweetie Spayed Female

- 보호소에 들어온 동물의 이름은 NULL(없음), *Sam, *Sam, *Sweetie입니다. 이 중 NULL과 중복되는 이름을 고려하면, 보호소에 들어온 동물 이름의 수는 2.

 

출력)

count

 

 

 

📌 내 풀이 및 코드

SELECT COUNT(DISTINCT NAME) AS count
FROM ANIMAL_INS;

- MAX로 풀었었는데 그걸 활용하려면 서브쿼리 개념을 알아야 했음. 근데 몰라서 힌트를 받고 다른 방식으로 제출함.

 

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** DISTINCT **

- 중복된 값을 제거하고 유일한 값들만 가져오거나 셀 때 사용

- DISTINCT는 SELECT에서만 사용 가능하고 INSERT, UPDATE, DELETE에서 사용 불가능

- COUNT(DISTINCT...)는 NULL 값을 세지 않음

// 기본 문법
SELECT DISTINCT 컬럼명
FROM 테이블명;