데이터에서 이상치를 만난다면 조건문을 활용하여 걸러낼 수 있습니다. 어떤 값이 이상치인지, 이상치를 걸러내기 위해 어떤 조건문을 사용할 것인지 정하는데에는 도메인 지식이 중요하게 작용합니다.
SELECT * FROM user
WHERE age BETWEEN 5 AND 100;
결측치를 어떻게 다루느냐에 따라 분석의 결과가 크게 달라지기도 합니다. 결측치가 포함된 행을 분석에서 제외하는 방법도 있지만, 샘플이 적을 때는 도메인을 활용하여 결측치를 다른 값으로 대체하는 것이 좋습니다. 소개할 함수는 결측치를 대체할 때 사용할 수 있는 함수입니다.
이전 포스팅에서도 소개한 적이 있는 함수입니다.
첫 번째 인자의 첫 번째 행부터 검색을 시작하고, 검색되는 행이 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' 값으로 대체됩니다.
COALESCE 함수보다 직관적인 함수입니다. 첫 번째 인자의 값이 NULL이라면 두 번째 인자로 대체됩니다.
SELECT IFNULL(email, 'N/A') FROM member;
IF 함수는 첫 번째 인자의 결과가 True라면 두 번째 인자가 리턴되고, False라면 세 번째 인자가 리턴되는 함수입니다.
SELECT IFNULL(IF email IS NOT NULL, email, 'N/A') FROM member;
'~의 경우'에 라는 뜻을 가진 함수입니다. CASE와 END로 쿼리를 묶어주고 그 안에 조건을 입력하는 형식입니다.
SELECT
CASE
WHEN email IS NOT NULL THEN email
ELSE 'N/A'
END
FROM user;