더북(TheBook)

이번 쿼리는 그리 어렵지 않습니다. gender, survived 두 칼럼을 GROUP BY 절과 SELECT 절에 명시하고 COUNT() 함수를 사용하면 성별 생존자 수와 사망자 수를 구할 수 있습니다. 결과를 보니 여성보다 남성이 더 많이 사망했습니다.

이번에는 성별 비율을 구해 볼까요?

코드 12-24

SELECT gender, survived, cnt,
       ROUND(cnt / SUM(cnt) OVER (PARTITION BY gender
                                      ORDER BY gender), 2) rates
  FROM (SELECT gender, survived, COUNT(*) cnt
          FROM titanic
         GROUP BY gender, survived
       ) t;

실행결과

코드 12-24는 코드 12-23에서 사용한 쿼리를 서브쿼리(파생 테이블)로 만들면서 인원수를 구하는 COUNT() 함수 결과에 cnt라는 별칭을 붙였습니다. 그리고 메인쿼리에서 윈도우를 사용해 각 로우에 있는 인원수를 성별 파티션을 대상으로 더한 인원수로 나누었습니다. 예를 들어 남성 사망자 수인 734를 전체 남성 수 843(734 + 109)로 나누니 약 0.87이 나왔습니다. 다시 말해, 남성의 약 87%가 사망했음을 알 수 있습니다. 생존자 수와 사망자 수를 원래 숫자로 보는 것보다는 비율로 보면 데이터를 파악하기가 더 쉬워집니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.