더북(TheBook)

코드 9-2는 GROUP BY 절과 AVG() 함수로 평균 매출액을 구했습니다. 그런데 결과가 좀 이상합니다. 영화별 매출액과 평균 매출액이 동일하게 나왔습니다. 왜 같은 금액이 나왔을까요?

연도별 1위 영화는 단 한 편뿐입니다. 따라서 개봉연도와 영화 제목을 GROUP BY 절에 놓으면 집계 대상이 영화 한 편이 됩니다. 결과적으로 그룹화 대상이 1건이므로 AVG() 함수의 반환값은 해당 영화의 매출액이 나올 수밖에 없죠. 그러므로 이 쿼리에서는 굳이 GROUP BY 절과 AVG() 함수를 사용할 필요가 없습니다.

우리가 구하려는 평균 매출액은 2004~2019년 1위 영화의 평균 매출액으로, 각 영화의 매출액을 모두 더한 값을 전체 건수로 나눈 값이 되어야죠. 따라서 앞의 쿼리로는 원하는 값을 구할 수 없고 다음과 같이 별도로 계산해야 합니다.

코드 9-3

SELECT AVG(sale_amt)
  FROM box_office
 WHERE ranks = 1;

실행결과

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