Analisis Database Sakila - Sistem Informasi Manajemen
Disusun oleh: Selsa Gilar Yona | NIM: M0725099
Laporan ini disusun untuk memenuhi tugas Case Method (CM) 1 pada mata kuliah Sistem Informasi Manajemen. Fokus utama laporan ini adalah mengeksplorasi dataset Sakila (database penyewaan film) untuk mengetahui performa pendapatan berdasarkan kategori film.
# Library yang diperlukan
library(DBI)
library(odbc)
library(ggplot2)
library(dplyr)
library(knitr)
Data diimpor langsung dari database MySQL Sakila.
con <- dbConnect(odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
UID = "root",
PWD = "glaryona8181",
Port = 3306,
database = "sakila"
)
Insight yang diambil adalah Performa Pendapatan per Kategori Film untuk melihat kategori mana yang paling menguntungkan.
query <- "
SELECT
c.name AS Kategori,
SUM(p.amount) AS Total_Revenue,
COUNT(r.rental_id) AS Total_Rentals,
AVG(p.amount) AS Avg_Ticket_Price
FROM category c
JOIN film_category fc ON c.category_id = fc.category_id
JOIN inventory i ON fc.film_id = i.film_id
JOIN rental r ON i.inventory_id = r.inventory_id
JOIN payment p ON r.rental_id = p.rental_id
GROUP BY c.name
ORDER BY Total_Revenue DESC"
data <- dbGetQuery(con, query)
data
## Kategori Total_Revenue Total_Rentals Avg_Ticket_Price
## 1 Sports 5314.21 1179 4.507388
## 2 Sci-Fi 4756.98 1101 4.320599
## 3 Animation 4656.30 1166 3.993396
## 4 Drama 4587.39 1060 4.327726
## 5 Comedy 4383.58 941 4.658427
## 6 Action 4375.85 1112 3.935117
## 7 New 4351.62 940 4.629383
## 8 Games 4281.33 969 4.418297
## 9 Foreign 4270.67 1033 4.134240
## 10 Family 4226.07 1096 3.855903
## 11 Documentary 4217.52 1050 4.016686
## 12 Horror 3722.54 846 4.400165
## 13 Children 3655.55 945 3.868307
## 14 Classics 3639.59 939 3.876028
## 15 Travel 3549.64 837 4.240908
## 16 Music 3417.72 830 4.117735
Analisis ini menggunakan persamaan matematis untuk menghitung rata-rata pendapatan
\[ \bar{x} = \frac{\sum_{i=1}^{n} Revenue_i}{n} \]
Analisis ini menggunakan perhitungan matematis untuk total pendapatan:
\[Total\ Revenue = \sum_{i=1}^{n} Amount_i\]
summary(data)
## Kategori Total_Revenue Total_Rentals Avg_Ticket_Price
## Length:16 Min. :3418 Min. : 830 Min. :3.856
## Class :character 1st Qu.:3706 1st Qu.: 940 1st Qu.:3.979
## Mode :character Median :4276 Median : 969 Median :4.188
## Mean :4213 Mean :1002 Mean :4.206
## 3rd Qu.:4435 3rd Qu.:1096 3rd Qu.:4.405
## Max. :5314 Max. :1179 Max. :4.658
Berikut adalah 10 kategori teratas berdasarkan total pendapatan.
kable(head(data, 10),
caption = "Tabel 1: Top 10 Kategori Film Terlaris",
col.names = c("Kategori", "Total Pendapatan ($)", "Total Penyewaan", "Rata-rata Harga"),
align = "c")
| Kategori | Total Pendapatan ($) | Total Penyewaan | Rata-rata Harga |
|---|---|---|---|
| Sports | 5314.21 | 1179 | 4.507388 |
| Sci-Fi | 4756.98 | 1101 | 4.320599 |
| Animation | 4656.30 | 1166 | 3.993396 |
| Drama | 4587.39 | 1060 | 4.327726 |
| Comedy | 4383.58 | 941 | 4.658427 |
| Action | 4375.85 | 1112 | 3.935117 |
| New | 4351.62 | 940 | 4.629383 |
| Games | 4281.33 | 969 | 4.418297 |
| Foreign | 4270.67 | 1033 | 4.134240 |
| Family | 4226.07 | 1096 | 3.855903 |
Visualisasi berikut menggambarkan hubungan antara jumlah penyewaan dan total pendapatan yang dihasilkan.
ggplot(data, aes(x = Total_Rentals, y = Total_Revenue, color = Avg_Ticket_Price)) +
geom_point(size = 4, alpha = 0.7) +
geom_smooth(method = "lm", color = "red", linetype = "dashed", se = FALSE, formula = y ~ x) +
scale_color_gradient(low = "#3498db", high = "#e74c3c") +
labs(title = "Hubungan Volume Penyewaan vs Pendapatan",
subtitle = "Warna menunjukkan rata-rata harga tiket",
x = "Jumlah Penyewaan (Rentals)",
y = "Total Pendapatan (Revenue)",
color = "Rata-rata Harga Tiket") +
theme_minimal()
Berdasarkan grafik, garis merah menunjukkan tren positif yang kuat. Kategori dengan titik merah menunjukkan harga rata-rata penyewaan yang lebih tinggi, yang memberikan kontribusi signifikan meskipun volumenya tidak selalu yang tertinggi.
data <- data %>%
mutate(Share = (Total_Revenue /sum(Total_Revenue)) * 100)
ggplot(data, aes(x = "", y = Share, fill = Kategori)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar("y", start = 0) +
scale_fill_manual(values = colorRampPalette(c("#D4E6F1", "#1A5276"))(nrow(data))) +
theme_void() +
labs(title = "Kontribusi Pendapatan per Kategori",
subtitle = "Persentase setiap kategori terhadap total pendapatan",
fill = "Kategori Film") +
theme(
legend.position = "right",
legend.title = element_text(face = "bold"),
plot.title = element_text(hjust = 0.5, face = "bold"),
plot.subtitle = element_text(hjust = 0.5)
) +
geom_text(aes(label = paste0(round(Share, 1), "%")),
position = position_stack(vjust = 0.5),
color = "black", size = 3)
Berdasarkan pie chart, kontribusi setiap kategori secara visual, terlihat bahwa setiap potongan memiliki ukuran yang hampir sama besarnya. Hal ini menunjukkan bahwa bisnis Sakila tidak bergantung pada satu kategori tunggal saja, melainkan memiliki portofolio pendapatan yang sangat terdiversifikasi di berbagai genre film.
Kategori Sports merupakan pemegang pangsa pasar terbesar dengan kontribusi 7,9%. Diikuti oleh kategori Sci-Fi (7,1%) dan Animation (6,9%). Ketiga kategori ini secara kolektif menyumbang hampir 22% dari total pendapatan, yang menandakan bahwa genre-genre ini adalah penggerak utama (revenue driver) bagi perusahaan.
tren_data <- dbGetQuery(con, "
SELECT
DATE_FORMAT(rental_date, '%M') AS Bulan,
COUNT(rental_id) AS Jumlah_Rental
FROM rental
WHERE rental_date BETWEEN '2005-05-01' AND '2005-08-31'
GROUP BY Bulan
ORDER BY MIN(rental_date)
")
tren_data$Bulan <- factor(tren_data$Bulan, levels = c("May", "June", "July", "August"))
ggplot(tren_data, aes(x = Bulan, y = Jumlah_Rental, group = 1)) +
geom_line(color = "#2c3e50", size = 1.2) +
geom_point(color = "#e74c3c", size = 3) +
labs(title = "Tren Volume Penyewaan Bulanan",
x = "Bulan (Tahun 2005)",
y = "Total Transaksi") +
theme_minimal()
Berdasarkan grafik tersebut, terdapat lonjakan signifikan pada bulan Juli. Volume penyewan tertinggi terdapat pada bulan Juli, hal tersebut juga menunjukkan bahwa pendapatan tertinggi tahun 2005 ada di bulan Juli.
ggplot(data, aes(x = reorder(Kategori, -Total_Revenue), y = Total_Revenue, fill = Total_Revenue)) +
geom_bar(stat = "identity") +
scale_fill_gradient(low = "#d4e6f1", high = "#1a5276") +
labs(title = "Peringkat Pendapatan Berdasarkan Kategori",
x = "Kategori Film",
y = "Total Pendapatan (USD)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))
Berdasarkan analisis di atas, dapat ditarik kesimpulan bahwa kategori Sports merupakan penggerak utama pendapatan perusahaan dan terdapat hubungan linear positif yang kuat antara jumlah rental dan pendapatan.