# Memuat paket yang diperlukan untuk koneksi database dan visualisasi
library(DBI)
library(ggplot2)
library(scales)

Pendahuluan

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.

Koneksi Database dan Pengambilan Data

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

Visualisasi: Histogram Nilai Pesanan

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")