https://school.programmers.co.kr/learn/courses/30/lessons/59408
특정 컬럼에 대해
하여 갯수를 세는 문제이다.
이전 문제에서 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
더 좋은 해결방법이 있다면 언제든 댓글로 알려주세요 🤗