더북(TheBook)

2 정답

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

실행결과

해설 1분 퀴즈 2에서 탑승 항구별로 생존자 수와 사망자 수를 구하는 쿼리를 작성했으므로 여기에 탑승 항구별 생존자 수와 사망자 수의 비율을 구하는 부분만 추가하면 됩니다. 탑승 항구별 비율은 COUNT() 함수로 구한 인원수를 탑승 항구별 전체 인원으로 나눠 구합니다. 따라서 인원수인 COUNT(*)SUM 함수의 매개변수로 넘기고 PARTITON BY 절에 탑승 항구인 embarked를 명시해 탑승 항구별 전체 인원수를 구하고, 이 수로 각 로우의 인원수를 나누면 탑승 항구별 생존자 수와 사망자 수의 비율을 구할 수 있습니다.

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