더북(TheBook)

코드 12-28은 코드 12-27에 객실 등급 칼럼인 pclass를 SELECTGROUP BY 절에 추가합니다. 결과를 보면 연령대와 객실 등급에 따라 생존자 수와 사망자 수가 조회됐습니다.

그런데 객실 등급을 추가하니 로우가 너무 많아져 한눈에 보기가 어렵습니다. 연령대는 그대로 두고 객실 등급을 칼럼 형태로 전환해 보면 데이터 파악이 좀 더 쉽지 않을까요? 작성해 봅시다.

코드 12-29

WITH raw_data AS
(SELECT CASE WHEN age BETWEEN 0 AND 9 THEN '1.10대이하'
             WHEN age BETWEEN 10 AND 19 THEN '2.10대'
             WHEN age BETWEEN 20 AND 29 THEN '3.20대'
             WHEN age BETWEEN 30 AND 39 THEN '4.30대'
             WHEN age BETWEEN 40 AND 49 THEN '5.40대'
             WHEN age BETWEEN 50 AND 59 THEN '6.50대'
             WHEN age BETWEEN 60 AND 69 THEN '7.60대'
             WHEN age IS NULL           THEN '9.알수없음'
             ELSE '8.70대 이상'
       END ages, pclass, survived, COUNT(*) cnt
  FROM titanic
 GROUP BY 1, 2, 3
)
SELECT ages, survived,
       SUM(CASE WHEN pclass = 1 THEN cnt ELSE 0 END) first_class,
       SUM(CASE WHEN pclass = 2 THEN cnt ELSE 0 END) business_class,
       SUM(CASE WHEN pclass = 3 THEN cnt ELSE 0 END) economy_class
  FROM raw_data
 GROUP BY 1, 2
 ORDER BY 1, 2;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.