Database Sakila merupakan database sampel atau contoh resmi yang disediakan oleh MySQL. Database ini merupakan data simulasi sistem operasional penyewaan DVD yang berisi 23 tabel dengan berbagai informasi di dalamnya. Informasi tersebut mulai dari aktor pemeran film, kategori film, bahasa, staff, kota, dan inventory. Berdasarkan informasi tersebut maka dilakukan analisis terkait total revenue berdasarkan kategori film. Analisis ini bertujuan untuk mengetahui kategori film yang menghasilkan total revenue terbesar berdasarkan transaksi pembayaran customer yang nantinya dapat digunakan untuk dasar promosi atau melihat permintaan pasar.
Insight yang diambil pada analisis ini adalah:
“Kategori film apa yang memiliki total revenue terbesar?”
Revenue dihitung berdasarkan total pembayaran customer pada setiap transaksi rental film.
Total revenue dihitung menggunakan persamaan berikut:
\[ TR = \sum_{i=1}^{n} x_i \]
Keterangan:
Melakukan instalasi package yang akan digunakan untuk analisis
library(DBI)
library(RMariaDB)
library(ggplot2)
library(dplyr)
Melakukan pengkoneksian database yang ada di MySQL ke R
con <- DBI::dbConnect(odbc::odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
Database = "sakila",
UID = "root",
PWD = "chal10nsha",
Port = 3306)
Query ini digunakan untuk menghitung total revenue pada setiap kategori film dalam database sakila.
Analisis ini dilakukan dengan menjumlahkan seluruh nilai pembayaran customer (amount) pada tabel payment dengan fungsi SUM. Kemudian data tersebut dihubungkan dengan data rental, inventrory, dan ketegori film menggunakan operasi JOIN.
Operasi GROUP BY digunakan untuk mengelompokkan data berdasarkan nama kategori film sehingga total revenue dapat dihitung untuk setiap kategori.
Operasi ORDER BY digunakan untuk mengurutkan hasil dari kategori dengan revenue tertinggi ke terendah
d1 <- "
SELECT
c.name AS category,
SUM(p.amount) AS total_revenue
FROM payment p
JOIN rental r
ON p.rental_id = r.rental_id
JOIN inventory i
ON r.inventory_id = i.inventory_id
JOIN film_category fc
ON i.film_id = fc.film_id
JOIN category c
ON fc.category_id = c.category_id
GROUP BY c.name
ORDER BY total_revenue DESC;
"
revenue_data <- dbGetQuery(con, d1)
revenue_data
## category total_revenue
## 1 Sports 5314.21
## 2 Sci-Fi 4756.98
## 3 Animation 4656.30
## 4 Drama 4587.39
## 5 Comedy 4383.58
## 6 Action 4375.85
## 7 New 4351.62
## 8 Games 4281.33
## 9 Foreign 4270.67
## 10 Family 4226.07
## 11 Documentary 4217.52
## 12 Horror 3722.54
## 13 Children 3655.55
## 14 Classics 3639.59
## 15 Travel 3549.64
## 16 Music 3417.72
ggplot(revenue_data,
aes(x = reorder(category, total_revenue),
y = total_revenue)) +
geom_col(fill = "steelblue") +
coord_flip() +
labs(
title = "Total Revenue per Kategori Film",
subtitle = "Database Sakila",
x = "Kategori Film",
y = "Total Revenue"
) +
theme_minimal(base_size = 13)
top5 <- revenue_data %>%
slice_max(total_revenue, n = 5)
top5
## category total_revenue
## 1 Sports 5314.21
## 2 Sci-Fi 4756.98
## 3 Animation 4656.30
## 4 Drama 4587.39
## 5 Comedy 4383.58
bottom5 <- revenue_data %>%
slice_min(total_revenue, n = 5)
bottom5
## category total_revenue
## 1 Music 3417.72
## 2 Travel 3549.64
## 3 Classics 3639.59
## 4 Children 3655.55
## 5 Horror 3722.54
Berdasarkan hasil analisis, terlihat bahwa terdapat perbedaan total revenue antar kategori film. Kategori dengan revenue tertinggi menunjukkan bahwa kategori tersebut memiliki kontribusi terbesar terhadap pendapatan rental film. Kategori dengan total revenue tertinggi adalah Sports disusul dengan Scifi, Animation, Drama, dan Comedy. Hal tersebut dapat dipicu dengan minat penyewa yang lebih tinggi dari kategori lainnya. Sedangkan untuk kategori Music, Travel, Classics, Children, dan Horror menduduki peringkat 5 paling bawah, hal ini mengindikasikan bahwa minat penyewa lebih sedikit dibanding kategori lainnya.
Analisis database Sakila menunjukkan bahwa beberapa kategori film memiliki kontribusi revenue yang lebih besar dibanding kategori lainnya. Informasi ini dapat digunakan sebagai dasar pengambilan keputusan bisnis, seperti promosi yang lebih serius untuk 5 kategori paling bawah atau memberikan promo dengan kombinasi kategori film dengan revenue tertinggi.