[SQL] 이상치, 결측치 다루기

박경국·2022년 5월 13일
0

SQL

목록 보기
5/14
post-thumbnail

조건문을 활용한 이상치 제거

데이터에서 이상치를 만난다면 조건문을 활용하여 걸러낼 수 있습니다. 어떤 값이 이상치인지, 이상치를 걸러내기 위해 어떤 조건문을 사용할 것인지 정하는데에는 도메인 지식이 중요하게 작용합니다.

SELECT * FROM user
WHERE age BETWEEN 5 AND 100;
  • 도메인 지식에 비춰봤을 때 통상적이지 않은 범위의 값을 제한하기 위해 WHERE 조건문을 활용할 수 있습니다.

결측치 다루기

결측치를 어떻게 다루느냐에 따라 분석의 결과가 크게 달라지기도 합니다. 결측치가 포함된 행을 분석에서 제외하는 방법도 있지만, 샘플이 적을 때는 도메인을 활용하여 결측치를 다른 값으로 대체하는 것이 좋습니다. 소개할 함수는 결측치를 대체할 때 사용할 수 있는 함수입니다.

COALESCE

이전 포스팅에서도 소개한 적이 있는 함수입니다.
첫 번째 인자의 첫 번째 행부터 검색을 시작하고, 검색되는 행이 NULL이 아니라면 원래 값을 반환하고, NULL이라면 두 번째 인자의 값을 반환합니다.

SELECT COALESCE(height, 'N/A') FROM user; 

다음처럼 사용할 수도 있습니다.

SELECT COALESCE(height, weight * 2.3,'N/A') FROM user; 

height에서 검색되는 행의 값이 NULL이라면 weigth*2.3의 값으로 대체됩니다. 이마저도 NULL이라면 'N/A' 값으로 대체됩니다.

IFNULL

COALESCE 함수보다 직관적인 함수입니다. 첫 번째 인자의 값이 NULL이라면 두 번째 인자로 대체됩니다.

SELECT IFNULL(email, 'N/A') FROM member; 

IF

IF 함수는 첫 번째 인자의 결과가 True라면 두 번째 인자가 리턴되고, False라면 세 번째 인자가 리턴되는 함수입니다.

SELECT IFNULL(IF email IS NOT NULL, email, 'N/A') FROM member; 

CASE

'~의 경우'에 라는 뜻을 가진 함수입니다. CASE와 END로 쿼리를 묶어주고 그 안에 조건을 입력하는 형식입니다.

SELECT 
	CASE
    	WHEN email IS NOT NULL THEN email
        ELSE 'N/A'
     END
FROM user;
  • WHEN : 어떤 상황에서 CASE 함수가 작동하는지 조건을 명시합니다.
  • TEHN : 함수가 작동할 때 그 결과를 무엇으로 리턴할지 명시합니다.
  • ELSE : 조건에 해당하지 않는 값을 무엇으로 리턴할지 명시합니다.

0개의 댓글