Pendahuluan

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 Analisis

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.

Persamaan Matematis

Total revenue dihitung menggunakan persamaan berikut:

\[ TR = \sum_{i=1}^{n} x_i \]

Keterangan:

Library

Melakukan instalasi package yang akan digunakan untuk analisis

library(DBI)
library(RMariaDB)
library(ggplot2)
library(dplyr)

Koneksi Database

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 SQL

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

Visualisasi Data

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)

Top 5 Kategori Revenue Tertinggi

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

Bottom 5 Kategori Revenue Terendah

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

Interpretasi

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.

Kesimpulan

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.