# Memuat paket yang diperlukan untuk koneksi database dan visualisasi
library(DBI)
library(ggplot2)
library(scales)
Laporan ini menyajikan distribusi nilai pesanan (order value) yang diterima dari pelanggan di negara-negara Nordic. Proses ini mengintegrasikan SQL untuk pengambilan data dan R untuk visualisasi.
Langkah pertama adalah membangun koneksi antara RStudio dan database MySQL menggunakan fungsi dbConnect()
con <- DBI::dbConnect(odbc::odbc(),
Driver = "MySQL ODBC 8.0 ANSI Driver",
Server = "127.0.0.1",
Database = "classicmodels",
UID = "root",
PWD = "haha", #sesuaikan dg password masing-masing
Port = 3306)
Setelah koneksi terjalin, kita menggunakan blok kode SQL untuk menghitung total nilai setiap pesanan dengan menggabungkan tabel orders, orderdetails, dan customers. Kita menggunakan argumen output.var untuk menyimpan hasil kueri langsung ke dalam data frame R
# Mendapatkan data yang diperlukan
dt1 <- dbGetQuery(con, "SELECT
o.orderNumber,
c.country,
SUM(od.quantityOrdered * od.priceEach) AS total_value
FROM orders o
JOIN orderdetails od ON o.orderNumber = od.orderNumber
JOIN customers c ON o.customerNumber = c.customerNumber
WHERE c.country IN ('Denmark', 'Finland', 'Norway', 'Sweden')
GROUP BY o.orderNumber")
dt1
## orderNumber country total_value
## 1 10103 Norway 50218.95
## 2 10105 Denmark 53959.21
## 3 10112 Sweden 7674.94
## 4 10141 Finland 29716.86
## 5 10151 Finland 32723.04
## 6 10155 Finland 37602.48
## 7 10158 Norway 1491.38
## 8 10161 Denmark 36164.46
## 9 10167 Sweden 44167.09
## 10 10181 Norway 55069.55
## 11 10188 Norway 29954.91
## 12 10238 Denmark 28211.70
## 13 10239 Finland 16212.59
## 14 10247 Finland 28394.54
## 15 10256 Denmark 4710.73
## 16 10284 Norway 32260.16
## 17 10289 Norway 12538.01
## 18 10291 Sweden 48809.90
## 19 10299 Finland 34341.08
## 20 10301 Norway 36798.88
## 21 10309 Norway 17876.32
## 22 10314 Denmark 53745.34
## 23 10320 Sweden 16799.03
## 24 10325 Norway 34638.14
## 25 10326 Sweden 19206.68
## 26 10327 Denmark 20564.86
## 27 10334 Sweden 23014.17
## 28 10363 Finland 45785.34
## 29 10373 Finland 46770.52
## 30 10377 Finland 23602.90
## 31 10389 Sweden 27966.54
## 32 10406 Denmark 21638.62
Kita menggunakan Library ggplot2 untuk membuat histogram. Fungsi geom_histogram() digunakan untuk melihat distribusi frekuensi dari data total value.
# Membuat histogram dengan label yang informatif menggunakan labs()
ggplot(dt1, aes(x = total_value)) +
geom_histogram(aes(fill = after_stat(count)), bins = 15, color = "white") +
stat_bin(bins = 15, geom = "text", aes(label = after_stat(count)), vjust = -0.5, size = 3) +
scale_fill_gradient(low = "#132B43", high = "#56B1F7") +
scale_x_continuous(labels = label_dollar()) +
scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
theme_minimal() +
labs(title = "Distribusi Nilai Pesanan di Negara Nordic",
subtitle = "Negara: Denmark, Finland, Norway, Sweden",
x = "Nilai Pesanan (USD)",
y = "Frekuensi (Jumlah Order)") +
theme(legend.position = "none")