코드 12-28은 코드 12-27에 객실 등급 칼럼인 pclass를 SELECT와 GROUP 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;