1. 질문
(1) 박스오피스 매출에서 당월개봉영화의 영향력
(2)
1월 박스오피스 10위권 영화의 3달간 매출
추이
2.참고data
영화진흥위원회: http://www.kofic.or.kr/kofic/business/main/main.do
6_1월 박스오피스.csv_180515.zip
3. 테이블생성스크립트
(1) 당월개봉영화의 매출에 미치는 영향
<1월 박스오피스 영화 data>로 table 생성.
CREATE TABLE boxoffice_movie_1
(순번 NUMBER(10),
영화명 VARCHAR2(100),
배급사 VARCHAR2(500),
개봉일 DATE,
국적 VARCHAR2(10),
전국스크린수 NUMBER(38),
전국매출액 NUMBER(38),
전국관객수 NUMBER(38),
장르 VARCHAR2(100),
등급 VARCHAR2(100));
(2)
1월 박스오피스 10위권 영화의 3달간 매출
추이
CREATE
TABLE month1_1
(순위jan number(10),
순위 number(10),
영화명 VARCHAR2(100),
배급사 VARCHAR2(500),
개봉일 DATE,
국적 VARCHAR2(100),
전국스크린수 number(38),
전국매출액 number(38),
전국관객수 number(38),
장르 VARCHAR2(50),
등급 VARCHAR2(100));
같은방법으로 month1_2
month1_3
month1_4을 생성
---- 데이터 정제 ---
-- null 값 이 존재하는 행 제거
DELETE
FROM month1_1
WHERE
영화명 IS NULL;

--1월 박스오피스 10위권 영화들의
월별 매출 관객수를 보기 위한 테이블 변환
CREATE
table open_month1_t1
as
select
*
from
(SELECT 영화명, 전국스크린수, 전국매출액,전국관객수 FROM open_month1_1)
unpivot(
jan for x IN (전국스크린수, 전국매출액, 전국관객수));
같은 방법으로 month1_t2
month1_t3
month1_t4 을 생성한 후
--merge문을 쓰기 전 조인기준컬럼을 하나로 만들기 위해 ‘영화명’ 컬럼 데이터 변환
update
open_month1_t1
SET
영화명 = 영화명||' /'||x;
ALTER
TABLE month1_t1
DROP
COLUMN x;
같은 방법으로 month1_t2
month1_t3
month1_t4 을 업데이트.
ALTER
table month1_t1
ADD
febnumber(20);
MERGE INTO month1_t1 e
USING month1_t2 f
ON(e.영화명=f.영화명)
when matched THEN
UPDATE SET e.feb = f.feb;
ALTER table month1_t1
ADD mar number(20);
MERGE INTO month1_t1 e
USING month1_t3 f
ON(e.영화명=f.영화명)
when matched THEN
UPDATE SET e.mar = f.mar;
ALTER table month1_t1
ADD aprnumber(20);
MERGE INTO month1_t1 e
USING month1_t4 f
ON(e.영화명=f.영화명)
when matched THEN
UPDATE SET e.apr = f.apr;

4. 분석쿼리
(1) 당월개봉영화가
매출에 미치는 영향
<1월 박스오피스 영화 매출 비중 분석>
CREATE TABLE box_movie10_1
as
SELECT
영화명, 전국매출액 ,ratio,
SUM(ratio)OVER(ORDER BY ratio desc) SUMratio,개봉일
FROM(
SELECT 영화명, 전국매출액, ROUND(ratio_to_report (전국매출액) OVER ( ),3) ratio, 개봉일
FROM boxoffice_movie_1
ORDER BY ratio desc);

(2) 1월 박스오피스 10위권 영화 3달간의 매출분석
CREATE OR REPLACE VIEW OPEN_month1_t_sales
AS
SELECT 영화명,MON,sales,lag(sales,1)OVER(ORDER
BY TO_DATE(mon,'MM')) lagsales, ROUND((sales-lag(sales,1)OVER(ORDER BY TO_DATE(mon,'MM')))/lag(sales,1)OVER(ORDER BY
TO_DATE(mon,'MM')),3) return
FROM ( SELECT *
FROM month1_t1
WHERE 영화명 LIKE '신%전국매출액%')
unpivot( sales FOR mon IN( jan, feb, mar,
apr))
UNION ALL
SELECT 영화명,MON,sales,lag(sales,1)OVER(ORDER
BY TO_DATE(mon,'MM')) lagsales, ROUND((sales-lag(sales,1)OVER(ORDER BY TO_DATE(mon,'MM')))/lag(sales,1)OVER(ORDER BY
TO_DATE(mon,'MM')),3) return
FROM ( SELECT *
FROM month1_t1
WHERE 영화명 LIKE '19%전국매출액%')
unpivot( sales FOR mon IN( jan, feb, mar,
apr))
UNION ALL
.
.
.
.
UNION ALL
SELECT 영화명,MON,sales,lag(sales,1)OVER(ORDER
BY TO_DATE(mon,'MM')) lagsales, ROUND((sales-lag(sales,1)OVER(ORDER BY TO_DATE(mon,'MM')))/lag(sales,1)OVER(ORDER BY
TO_DATE(mon,'MM')),3) return
FROM ( SELECT *
FROM month1_t1
WHERE 영화명 LIKE '염력%전국매출액%')
unpivot( sales FOR MON IN( jan, feb, mar,
apr));
5. 결과화면
(1)
<1월> 박스오피스 영화 중에서 누적매출비중을 매출순위별로 매겼을때 94%안에 해당하는 1월 당월에 개봉한 영화.

<2월>

<3월>

(2) 1월 박스오피스 10위권 영화들의 3달간의 매출과 매출증감율을 보여준다.

6. 결론
* 1월당월 개봉한 영화중 누적매출비중 94%에 들어가는 영화는 6개이면서 당월 박스오피스 매출비중 40%이상을 차지한다.
2월당일 개봉한 영화중 누적 매출비중 94%에 들어가는 영화는 5개이면서 당월 박스오피스 매출비중 60%이상을 차지한다.
*개봉한달이 지난 시점에서 급격한 매출 감소율을 보이면서 영화 매출이 개봉 첫 달매출이 대부분을 차지하는것을 짐작.
7.연습문제
박스오피스 영화 중에서 누적매출비중을 매출순위별로 매겼을때 94%안에 해당하는 1월 당월에 개봉한 영화.