SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS
WHERE NAME IS NOT NULL
중복 제거를 하고 싶을 때는 컬럼 명 앞에 써줘야 한다.
SELECT DISTINCT NAME FROM ANIMAL_INS
그런데 개수를 구하라고 했으니까 COUNT()로 묶어준다.
문제에서 이름이 널일 때는 제외하라고 적혀있었는데, MYSQL에서 COUNT(컬럼명)을 할 때 알아서 널을 제외하고 갯수를 세준다.
COUNT()
-> COUNT () 함수는 번호를 반환합니다.
-> SELECT 문에 의해 검색된 행의 수 (NULL 및 중복 값을 포함하는 행을 포함)
COUNT(표현식)
-> COUNT(표현식)은 표현식이 NULL이 아닌 값을 계산합니다.
-> 표현식은 열 이름과 같이 단순한 것일 수도 있고, IF 함수와 같은 복잡한 표현식일 수도 있습니다.
COUNT(DISTINCT 표현식)
-> DISTINCT 키워드는 표현식에 대해 고유한 널이 아닌 값만 계산합니다.
-> 예를 들면, COUNT(DISTINCT CUSTOMER_NAME) : 고객의 이름에 대해 고유한 값이 있는 행만 계산합니다.
위를 바탕으로 코드를 다시 써보면
SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS
이렇게 WHERE을 쓰지 않고도 널이 아닌, 중복이 없는 이름이 모두 몇 개인지 구할 수 있다.