Algorithm

[Oracle / 프로그래머스 SQL 연습] 중복 제거하기 - NULL 과 비교연산자/논리연산자

devkmee 2022. 2. 15. 11:52

SUM, MAX, MIN > 중복 제거하기

 

▶테이블 정보

▶문제

동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 

이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.

▶SQL문

SELECT COUNT(DISTINCT(NAME)) AS 이름
FROM ANIMAL_INS
WHERE NAME IS NOT NULL

>> COUNT 함수에 DISTINCT (중복제거 기준 컬럼명) 을 적었다

 

>>

WHERE 절에 NAME != NULL 을 써서 오류가 났다.

비교연산자 ( != ) 는 NULL에 사용 할 수 없기 때문에 논리연산자 ( IS NOT )를 사용해야 한다고 한다

NAME 컬럼의 값을 비교하는 쿼리인데 NULL은 비교할 대상이 없어서 생긴 오류인 것 같다

 

논리연산자는 자바의 boolean 처럼 TRUE / FALSE 값을 반환하기 때문에 NULL이 존재하는지 존재하지 않는지 체크 할 수 있어서 쿼리가 정상적으로 실행되었다

 

▶실행 결과