본문 바로가기
Mysql

프로그래머스 SQL 고득점 Kit (SUM,MAX,MIN) 중복 제거하기

by 열정적인 이찬형 2021. 11. 5.

문제 링크

프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. 

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

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


테이블


문제 결과

예를 들어 ANIMAL_INS 테이블이 이와 같다면.

SQL문을 실행하면 나오는 결과는


접근 방법

SQL 문의 조회 명령어 SELECT문에서 행의 개수를 조회하고 있습니다. 

그래서 COUNT문을 NAME에 사용하였으며 중복되는 이름은 하나로 출력하기 위해 중복을 제거하는 DISTINCT을 사용하였습니다. 결과는 count로 출력되기 때문에 AS문을 사용하여 별칭을 부여했습니다.

이후에 NAME이 NULL이 아닌 값들을 출력하는 것으로 IS NOT NULL을 사용하였습니다. IS NOT NULL 대신에 NOT IN("NULL")을 사용하셔도 올바르게 출력이 됩니다.


결과 코드

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

댓글