더북(TheBook)

코드 7-22의 쿼리는 WHERE 절에 ranks 칼럼 값이 1에서 10인 조건을 줬는데, ranks 칼럼에는 영화 순위가 담겨 있습니다. 그리고 GROUP BY 절에서는 EXTRACT() 함수로 개봉일(release_date)에서 연과 월을 추출합니다. 따라서 이 쿼리는 개봉연월별로 순위가 1~10위에 있는 영화 편수를 구하는 문장입니다. 가령 2019년 7월에 개봉한 영화 중 1~10위의 영화는 총 2편임을 알 수 있습니다.

쿼리를 수행한 결과가 너무 많죠? 이 중에서 1~10위에 드는 영화가 2편 이상 개봉한 연월만 골라내 봅시다. 어떻게 해야 할까요? 앞에서 개봉편수를 COUNT() 함수로 구했으니 이 함수의 반환값을 사용해 조건을 주면 되지 않을까요? 조건은 WHERE 절에서 처리하니 다음과 같이 쿼리를 작성해 봅시다.

코드 7-23

SELECT EXTRACT(YEAR_MONTH FROM release_date) 개봉연월, COUNT(*) 개봉편수
  FROM box_office
 WHERE 1 = 1
   AND ranks BETWEEN 1 AND 10
   AND COUNT(*) > 1
 GROUP BY EXTRACT(YEAR_MONTH FROM release_date)
 ORDER BY 1 DESC;

실행결과

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