나이 칼럼인 age 값의 종류를 보기 위해 age별로 집계 쿼리를 작성했습니다. 결과를 보니 두 가지 문제점이 눈에 띄네요.
첫 번째, NULL이 들어간 데이터가 많습니다. 코드 12-25에서는 별도의 NULL 처리를 하지 않았습니다. 그래서 NULL인 건이 모두 70대 이상에 포함되어 70대 이상 사망자나 생존자 수가 많게 나왔습니다.
두 번째, 나이가 0과 1 사이 값으로 들어간 데이터가 있습니다. 코드 12-25에서는 10대 이하를 1~9세 사이로 계산했기 때문에 0.42 같은 건은 10대 이하로 들어가지 않고 70대 이상에 포함됐습니다. 그런데 어떻게 나이가 0.42로 입력됐을까요? 잘못 입력된 값일까요?
원천 데이터가 잘못됐을 수 있습니다. 타이타닉 사고가 발생했을 때는 지금처럼 컴퓨터도 없었고 사람이 직접 탑승자 데이터를 수집했을 테니 이 과정에서 실수가 있을 수 있습니다. 하지만 제 생각에는 0.42는 잘못된 값이 아닙니다. 우리는 태어나는 순간 무조건 1살로 치지만 외국에서는 그렇지 않죠. 따라서 0.42라는 나이는 돌이 지나지 않은 아이의 나이로 보입니다.
문제점을 발견했으니 이제 쿼리를 수정해야 합니다. 먼저 NULL 처리를 해야겠죠. age도 숫자형 칼럼이니 NULL을 0으로 변경하면 될 것 같습니다. 그런데 여기서 잠깐! 모두 0으로 변경하는 것이 맞을까요? 다시 말하지만, 사고가 발생한 1912년에는 탑승자 명단을 정확히 파악하기가 어려웠을 겁니다. 따라서 여기서 NULL이 들어간 데이터는 탑승자의 나이를 파악하지 못한 건일 확률이 높습니다. 따라서 NULL을 0으로 변경할 것이 아니라 NULL을 ‘알수없음’이라는 별도의 항목으로 빼는 것이 더 좋을 것 같군요.