[프로그래머스/MySQL] 중복 제거하기

지누초이·2024년 3월 27일

프로그래머스

목록 보기
20/37
post-thumbnail

문제

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


노트

특정 컬럼에 대해

  • NULL은 집계 제외
  • 중복은 하나로 취급

하여 갯수를 세는 문제이다.

이전 문제에서 COUNT()에 대해 다룰 때,
COUNT(*)NULL 을 포함한 모든 레코드 수를 리턴하고
COUNT(컬럼) 은 해당 컬럼에서 NULL 을 제외한 레코드 수를 리턴한다고 했다.

그러면 중복은 하나로 취급하는 것은 어디서 처리해야할까.
왠지 DISTINCT 일 것만 같은데

SELECT DISTINCT
	COUNT(NAME)
SELECT
	COUNT(DISTINCT NAME)

위 아래 중 어떤 것일까.

정답은 아래 코드다.
문법이니 받아들이자.


참고로 GROUP BY 를 사용할 경우,

SELECT
	COUNT(NAME)
FROM
	TABLE
GROUP BY
	NAME

중복을 제외하긴 하지만
COUNT() 가 적용되는 방법이 전체 레코드 수의 확인이 아닌
각 그룹에 해당되는 수를 출력하는 것이다.

NAME
abc
abc
def

위 테이블의 경우 우리가 기대하는 값은

COUNT
2

이겠지만 GROUP BY를 사용할 경우에는 아래와 같은 결과를 얻게 될 것이다.

COUNT
2 (abc 그룹 2개)
1 (def 그룹 1개)

정답

SELECT
    COUNT(DISTINCT NAME)
FROM
    ANIMAL_INS

더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗

0개의 댓글