Latar belakang :

#Dalam data Coffe Chain set, produk-produk yang ada memiliki catatan penjualan setiap awal bulannya. Hal itu menjadi suatu insight yang menarik untuk dibahas karena dapat menjadi pertimbangan dalam pengambilan keputusan. Setiap jenis produk terdapat dugaan bahwa memiliki pola tertentu.

Rumusan Masalah :

#1) Apakah tipe produk kopi dan teh mengalami pola kenaikan, penurunan, atau stagnan di musim tertentu? #2) Bagaimana efektivitas marketing terhadap profit di bulan/musim tertentu pada saat produk mengalami puncak penjualan?

A. Koneksi SQL ke RStudio

library(odbc)
## Warning: package 'odbc' was built under R version 4.5.2
library(DBI)
odbcListDrivers()
##                                                      name        attribute
## 1                                              SQL Server         APILevel
## 2                                              SQL Server ConnectFunctions
## 3                                              SQL Server        CPTimeout
## 4                                              SQL Server    DriverODBCVer
## 5                                              SQL Server        FileUsage
## 6                                              SQL Server         SQLLevel
## 7                                              SQL Server       UsageCount
## 8                Microsoft Access Driver (*.mdb, *.accdb)       UsageCount
## 9                Microsoft Access Driver (*.mdb, *.accdb)         APILevel
## 10               Microsoft Access Driver (*.mdb, *.accdb) ConnectFunctions
## 11               Microsoft Access Driver (*.mdb, *.accdb)    DriverODBCVer
## 12               Microsoft Access Driver (*.mdb, *.accdb)        FileUsage
## 13               Microsoft Access Driver (*.mdb, *.accdb)        FileExtns
## 14               Microsoft Access Driver (*.mdb, *.accdb)         SQLLevel
## 15 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)       UsageCount
## 16 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)         APILevel
## 17 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) ConnectFunctions
## 18 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)    DriverODBCVer
## 19 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)        FileUsage
## 20 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)        FileExtns
## 21 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)         SQLLevel
## 22            Microsoft Access Text Driver (*.txt, *.csv)       UsageCount
## 23            Microsoft Access Text Driver (*.txt, *.csv)         APILevel
## 24            Microsoft Access Text Driver (*.txt, *.csv) ConnectFunctions
## 25            Microsoft Access Text Driver (*.txt, *.csv)    DriverODBCVer
## 26            Microsoft Access Text Driver (*.txt, *.csv)        FileUsage
## 27            Microsoft Access Text Driver (*.txt, *.csv)        FileExtns
## 28            Microsoft Access Text Driver (*.txt, *.csv)         SQLLevel
## 29                             MySQL ODBC 8.0 ANSI Driver       UsageCount
## 30                          MySQL ODBC 8.0 Unicode Driver       UsageCount
##                   value
## 1                     2
## 2                   YYY
## 3                    60
## 4                 03.50
## 5                     0
## 6                     1
## 7                     1
## 8                     3
## 9                     1
## 10                  YYN
## 11                02.50
## 12                    2
## 13        *.mdb,*.accdb
## 14                    0
## 15                    3
## 16                    1
## 17                  YYN
## 18                02.50
## 19                    2
## 20 *.xls,*.xlsx, *.xlsb
## 21                    0
## 22                    3
## 23                    1
## 24                  YYN
## 25                02.50
## 26                    2
## 27         *.txt, *.csv
## 28                    0
## 29                    1
## 30                    1
dbConnect(odbc(),
          Driver = "MySQL ODBC 8.0 ANSI Driver",
          Server = "127.0.0.1",
          UID = "root",
          PWD = "farelarrafi445",
          Port = "3306")
## <OdbcConnection> root@127.0.0.1 via TCP/IP
##   Database: null
##   MySQL Version: 8.0.43
con1 = dbConnect(odbc(),
                 Driver = "MySQL ODBC 8.0 ANSI Driver",
                 Server = "127.0.0.1",
                 UID = "root",
                 PWD = "farelarrafi445",
                 Port = "3306")

con2 = dbConnect(odbc(),
                 Driver = "MySQL ODBC 8.0 ANSI Driver",
                 Server = "127.0.0.1",
                 UID = "root",
                 PWD = "farelarrafi445",
                 Port = "3306",
                 Database = "coffechains")

C. Analisis rumusan masalah

1) Apakah profit penjualan tiap tipe produk kopi dan teh mengalami pola kenaikan, penurunan, atau stagnan di musim tertentu?

#Dataset total pendapatan tipe produk Kopi selama 2013
dataset_kopi_teh <- dbGetQuery(con2, "select monthname(Tanggal), Jenis_produk, sum(Penjualan) as total_pendapatan from (select f.`Date` as Tanggal, f.ProductId, p.`Product Type` as Jenis_produk, p.Product, sum(f.Sales) as Penjualan from facttable f
join product p on f.ProductId = p.ProductId
where p.`Product Type` in ('Tea', 'Coffee') and year(f.Date) = 2013
group by p.Product, f.ProductId, p.`Product Type`, Tanggal
order by f.ProductId) as total_penjualan_teh
group by Jenis_produk, Tanggal;")


#Total pendapatan produk kopi dan teh
dataset_kopi_teh
##    monthname(Tanggal) Jenis_produk total_pendapatan
## 1            February       Coffee             8872
## 2             October       Coffee             8909
## 3             January       Coffee             9305
## 4           September       Coffee             9426
## 5                 May       Coffee             8865
## 6              August       Coffee             9702
## 7            December       Coffee             9350
## 8               March       Coffee             8958
## 9                July       Coffee             9821
## 10           November       Coffee             8759
## 11              April       Coffee             9257
## 12               June       Coffee             9470
## 13            October          Tea             7472
## 14          September          Tea             7607
## 15           February          Tea             7201
## 16                May          Tea             7098
## 17            January          Tea             7444
## 18              March          Tea             7255
## 19             August          Tea             7474
## 20           November          Tea             7123
## 21           December          Tea             7497
## 22               July          Tea             7400
## 23               June          Tea             7290
## 24              April          Tea             7378
#Urutan dataset berdasarkan bulan
dataset_kopi_teh$`monthname(Tanggal)` <- factor(dataset_kopi_teh$`monthname(Tanggal)`, levels = month.name)

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
#Line chart untuk melihat tren penjualan produk kopi dan teh selama tahun 2013
library(ggplot2)
timeseries_line <- ggplot(dataset_kopi_teh, aes(x = `monthname(Tanggal)`, y = total_pendapatan, group = Jenis_produk, color = Jenis_produk)) +
  geom_line() +
  geom_point() +
  labs(title = "Tren Penjualan Produk Kopi dan Teh selama Tahun 2013",
       x = "Bulan",
       y = "Total Pendapatan") +
  theme_minimal() +
  scale_color_manual(values = c("Coffee" = "brown", "Tea" = "green")) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

timeseries_line

#Interpretasi grafik : Tren pendapatan produk Kopi dan Teh mempunyai pola yang cenderung mirip, tetapi sedikit berbeda. Kemiripan pola dapat dilihat dari pola pada awal tahun (bulan Januari - April). Pendapatan kedua produk mengalami penurunan pada bulan Februari karena berakhirnya musim dingin. Pendapatan perlahan mengalami kenaikan hingga bulan April, kemudian pendapatan turun di bulan Mei. Puncak pendapatan kedua produk berada di bulan yang berbeda, produk kopi mengalami puncak penjualan di bulan Juli, sedangkan produk Teh mengalami puncak penjualan di bulan September.Selain pola tersebut, pola yang cukup menarik dari kedua produk dapat ditinjau di penjualan akhir tahun (bulan November-Desember). Pola tersebut mungkin disebabkan karena adanya musim dingin / salju yang menyebabkan banyak masyarakat mulai mengonsumsi minuman hangat, dalam hal ini adalah produk kopi dan teh.

Uji Normalitas Shapiro Wilk Data Produk Kopi dan Teh

##Uji normalitas antara 2 data produk bertujuan untuk mengetahui normalitas kedua data dan menentukan uji yang sesuai dengan normalitasnya (parametrik jika normal dan nonparametrik jika tidak normal)

dataset_kopi <- dbGetQuery(con2,"select monthname(Tanggal), Jenis_produk, sum(Penjualan) as total_pendapatan from (select f.`Date` as Tanggal, f.ProductId, p.`Product Type` as Jenis_produk, p.Product, sum(f.Sales) as Penjualan from facttable f
join product p on f.ProductId = p.ProductId
where p.`Product Type` in ('Coffee') and year(f.Date) = 2013
group by p.Product, f.ProductId, p.`Product Type`, Tanggal
order by f.ProductId) as total_penjualan_teh
group by Jenis_produk, Tanggal;")

dataset_teh <- dbGetQuery(con2,"select monthname(Tanggal), Jenis_produk, sum(Penjualan) as total_pendapatan from (select f.`Date` as Tanggal, f.ProductId, p.`Product Type` as Jenis_produk, p.Product, sum(f.Sales) as Penjualan from facttable f
join product p on f.ProductId = p.ProductId
where p.`Product Type` in ('Tea') and year(f.Date) = 2013
group by p.Product, f.ProductId, p.`Product Type`, Tanggal
order by f.ProductId) as total_penjualan_teh
group by Jenis_produk, Tanggal;")


#Uji normalitas dataset kopi
uji_normalitas_kopi <- shapiro.test(dataset_kopi$total_pendapatan)
#Interpretasi hasil uji
cat(ifelse(uji_normalitas_kopi$p.value > 0.05, "Data Produk Kopi Berdistribusi Normal", "Data Produk Kopi Tidak Berdistribusi Normal"))
## Data Produk Kopi Berdistribusi Normal
#Uji normalitas dataset teh
uji_normalitas_teh <- shapiro.test(dataset_teh$total_pendapatan)
#Interpretasi hasil uji
cat(ifelse(uji_normalitas_teh$p.value > 0.05, "Data Produk Teh Berdistribusi Normal", "Data Produk Teh Tidak Berdistribusi Normal"))
## Data Produk Teh Berdistribusi Normal

Uji t berpasangan untuk dataset kopi dan teh

#Uji t berpasangan untuk dataset kopi dan teh
uji_t_berpasangan <- t.test(dataset_kopi$total_pendapatan, dataset_teh$total_pendapatan, paired = TRUE)
#Interpretasi hasil uji t berpasangan
cat(ifelse(uji_t_berpasangan$p.value < 0.05, "Terdapat Perbedaan Signifikan antara Pendapatan Produk Kopi dan Teh", "Tidak Terdapat Perbedaan Signifikan antara Pendapatan Produk Kopi dan Teh"))
## Terdapat Perbedaan Signifikan antara Pendapatan Produk Kopi dan Teh

2) Bagaimana efektivitas marketing terhadap profit di bulan/musim tertentu pada saat produk mengalami puncak penjualan?

df_efektivitas <- dbGetQuery(con2, "select month(ft.Date) as Bulan, monthname(ft.Date) as Nama_bulan, p.`Product Type`, sum(ft.Profit) as keuntungan, sum(ft.Marketing) as biaya_marketing, (round((sum(ft.Profit) / sum(ft.Marketing)) * 100, 2)-100) as efektivitas from facttable ft
join product p on ft.ProductId = p.ProductId
where year(ft.Date)=2013 and p.`Product Type` in ('Coffee', 'Tea')
group by month(ft.Date), monthname(ft.Date), p.`Product Type`
order by month(ft.Date), `Product Type`;")

df_efektivitas
##    Bulan Nama_bulan Product Type keuntungan biaya_marketing efektivitas
## 1      1    January       Coffee       3669            1301      182.01
## 2      1    January          Tea       2535            1073      136.25
## 3      2   February       Coffee       3456            1312      163.41
## 4      2   February          Tea       2550            1067      138.99
## 5      3      March       Coffee       3508            1321      165.56
## 6      3      March          Tea       2567            1075      138.79
## 7      4      April       Coffee       3624            1370      164.53
## 8      4      April          Tea       2583            1100      134.82
## 9      5        May       Coffee       3547            1402      153.00
## 10     5        May          Tea       2527            1137      122.25
## 11     6       June       Coffee       3946            1490      164.83
## 12     6       June          Tea       2683            1149      133.51
## 13     7       July       Coffee       4127            1555      165.40
## 14     7       July          Tea       2730            1167      133.93
## 15     8     August       Coffee       4065            1538      164.30
## 16     8     August          Tea       2756            1176      134.35
## 17     9  September       Coffee       3825            1376      177.98
## 18     9  September          Tea       2656            1141      132.78
## 19    10    October       Coffee       3440            1323      160.02
## 20    10    October          Tea       2689            1101      144.23
## 21    11   November       Coffee       3335            1308      154.97
## 22    11   November          Tea       2500            1059      136.07
## 23    12   December       Coffee       3673            1387      164.82
## 24    12   December          Tea       2605            1124      131.76
#Pengurutan bulan
df_efektivitas$Nama_bulan <- factor(df_efektivitas$Nama_bulan, levels = month.name)

#Bar chart untuk melihat efektivitas  terhadap profit di bulan/musim tertentu pada saat produk mengalami puncak penjualan

library(ggplot2)
bar_chart <- ggplot(df_efektivitas, aes(x = Nama_bulan, y = efektivitas, fill = `Product Type`)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Efektivitas Marketing terhadap Profit per Bulan untuk Produk Kopi dan Teh",
       x = "Bulan",
       y = "Efektivitas (%)") +
  theme_minimal() +
  scale_fill_manual(values = c("Coffee" = "brown", "Tea" = "darkgreen")) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

bar_chart

#Interpretasi grafik : Efektivitas marketing terhadap profit untuk produk kopi dan teh memiliki pola yang cukup mirip, tetapi terdapat beberapa perbedaan. Pola yang mirip dapat dilihat pada bulan Januari hingga April, dimana efektivitas marketing untuk kedua produk mengalami penurunan. Hal ini mungkin disebabkan karena berakhirnya musim dingin yang menyebabkan penurunan konsumsi minuman hangat seperti kopi dan teh. Setelah itu, efektivitas marketing untuk kedua produk mulai meningkat secara bertahap hingga mencapai puncaknya di bulan Juli untuk kopi dan bulan September untuk teh. Pola yang berbeda dapat dilihat pada bulan November dan Desember, dimana efektivitas marketing untuk produk kopi mengalami peningkatan yang signifikan, sedangkan untuk produk teh tetap stabil atau bahkan menurun. Hal ini mungkin disebabkan karena adanya musim dingin atau salju yang menyebabkan banyak masyarakat mulai mengonsumsi minuman hangat, dalam hal ini adalah produk kopi dan teh. Namun, mungkin juga disebabkan karena adanya promosi atau diskon khusus untuk produk kopi selama musim dingin yang meningkatkan efektivitas marketingnya dibandingkan dengan produk teh.

#Kesimpulan akhir : #Berdasarkan analisis visual dan statistik, produk Kopi dan Teh menunjukkan tren musiman yang sesuai dengan lonjakan penjualan di akhir tahun, di mana peningkatan biaya marketing terbukti efektif mendorong profitabilitas pada kedua kategori tersebut. Validasi melalui uji Shapiro-Wilk mengonfirmasi bahwa data berdistribusi normal, sehingga hasil uji t berpasangan yang menunjukkan perbedaan pendapatan signifikan antara keduanya menjadi dasar kuat bahwa Kopi dan Teh memiliki skala pasar yang berbeda meski bergerak dalam pola yang serupa. Secara strategis, solusi yang dapat dilakukan adalah mengalihkan biaya marketing di bulan-bulan di mana pendapatan kopi dan teh mengalami penurunan dan mengalokasikan biaya marketing secara lebih agresif dan besar pada produk Kopi dan teh selama musim dingin untuk memaksimalkan profit.