# Memuat paket yang diperlukan untuk koneksi database dan visualisasi
library(DBI)
## Warning: package 'DBI' was built under R version 4.4.2
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.2
library(scales)
## Warning: package 'scales' was built under R version 4.4.2
con <- DBI::dbConnect(odbc::odbc(),
                       Driver = "MySQL ODBC 8.0 ANSI Driver",
                       Server = "127.0.0.1",
                       Database = "classicmodels",
                       UID = "root",
                       PWD = "root",
                       Port = 3306)
# Mendapatkan data yang diperlukan

data1 <- dbGetQuery(con, "SELECT productScale,
                    COUNT(*) AS totalItems
                    FROM products
                    GROUP BY productScale")

data1
# Membuat barchart untuk banyaknya item tiap product scale
ggplot(data1, aes(x = productScale, y = totalItems)) +
geom_bar(stat = "identity", fill = "blue", alpha = 1) +
theme_minimal() +
labs(title = "Total Item per Skala Produk",
x = "Skala Produk",
y = "Total Item") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
## Don't know how to automatically pick scale for object of type <integer64>.
## Defaulting to continuous.

###############################
##########  LATIHAN ###########
###############################
query_nordic <- "SELECT 
                  o.orderNumber,
                  c.country,
                  SUM(od.quantityOrdered * od.priceEach)                        AS orderValue
                  FROM customers c
                  JOIN orders o ON c.customerNumber =                           o.customerNumber
                  JOIN orderdetails od ON o.orderNumber =                       od.orderNumber
                  WHERE c.country IN             ('Denmark','Finland','Norway','Sweden')
                  GROUP BY o.orderNumber, c.country"
data_nordic <- dbGetQuery(con, query_nordic)
data_nordic
ggplot(data_nordic, aes(x = orderValue)) +
  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 = scales::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")

```