코딩테스트/SQL

[프로그래머스][MySQL] Lv. 2 중복 제거하기

_알파카 2024. 7. 15. 17:16
728x90

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/59408

 

프로그래머스

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

programmers.co.kr

주어진 문제는 동물의 고유한 이름 개수를 조회하는 문제이다. 

이 때, 이름이 NULL인 경우는 집계하지 않는다. 

 

내 풀이

SELECT COUNT(DISTINCT NAME) as count
FROM ANIMAL_INS;

 

풀이는 간단하다. 

먼저, SQL에서 제공하는 중복 제거 키워드인 DISTINCT를 사용하여, 

중복이 없는 고유한 이름의 개수를 구한다. 

(* 참고로 DISTINCT 뒤에 2개 이상의 컬럼을 사용하면, DISTINCT 뒤에 오는 모든 컬럼에 대해 하나의 행으로 인식하여, 그 행의 중복을 제거한다.) 

 

그리고 이름이 NULL인 경우는 집계하지 않는다는 조건에 따라서 WHERE절을 사용해야하지 않을까 생각할 수 있지만, 

그럴 필요가 없다. 

왜냐하면 COUNT 함수에서 *이 아닌 컬럼명을 지정하면, 해당 컬럼에 존재하는 null의 개수를 세지 않기 때문에 

주어진 조건대로 NULL인 경우는 집계하지 않게 된다. 

(참고로 COUNT(*)는 NULL 값을 포함하여 출력한다.)

 

 

728x90