library(DBI)
## Warning: package 'DBI' was built under R version 4.5.2
library(RSQLite)
## Warning: package 'RSQLite' was built under R version 4.5.2
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(RMariaDB)
## Warning: package 'RMariaDB' was built under R version 4.5.2
server <- dbConnect(
MariaDB(),
user = "root",
password = "",
host = "localhost"
)
dbExecute(server, "CREATE DATABASE IF NOT EXISTS AyamGeprekDB")
## [1] 1
dbExecute(server, "USE AyamGeprekDB")
## [1] 0
# Tabel Menu
dbExecute(server, "
CREATE TABLE Menu (
id_menu INT AUTO_INCREMENT PRIMARY KEY,
nama_menu VARCHAR(100),
kategori VARCHAR(50),
harga DECIMAL(10,2)
)")
## [1] 0
# Tabel Pelanggan
dbExecute(server, "
CREATE TABLE Pelanggan (
id_pelanggan INT AUTO_INCREMENT PRIMARY KEY,
nama_pelanggan VARCHAR(100),
umur INT,
jenis_kelamin VARCHAR(20),
frekuensi_kunjungan INT
)")
## [1] 0
# Tabel Transaksi
dbExecute(server, "
CREATE TABLE Transaksi (
id_transaksi INT AUTO_INCREMENT PRIMARY KEY,
id_pelanggan INT,
id_menu INT,
tanggal DATE,
jumlah INT,
total_harga DECIMAL(12,2),
FOREIGN KEY (id_pelanggan) REFERENCES Pelanggan(id_pelanggan),
FOREIGN KEY (id_menu) REFERENCES Menu(id_menu)
)")
## [1] 0
# Data Menu
dbExecute(server, "
INSERT INTO Menu (id_menu, nama_menu, kategori, harga) VALUES
(1, 'Ayam Geprek Original', 'Makanan', 15000),
(2, 'Ayam Geprek Keju', 'Makanan', 20000),
(3, 'Ayam Geprek Sambal Hijau', 'Makanan', 18000),
(4, 'Ayam Geprek Level 5', 'Makanan', 17000),
(5, 'Es Teh Manis', 'Minuman', 5000),
(6, 'Es Jeruk', 'Minuman', 7000),
(7, 'Jus Alpukat', 'Minuman', 12000),
(8, 'Nasi Tambah', 'Tambahan', 5000)
")
## [1] 8
# Data Pelanggan
dbExecute(server, "
INSERT INTO Pelanggan (id_pelanggan, nama_pelanggan, umur, jenis_kelamin, frekuensi_kunjungan) VALUES
(1, 'Rizky', 20, 'Laki-laki', 6),
(2, 'Aulia', 21, 'Perempuan', 8),
(3, 'Dewi', 22, 'Perempuan', 4),
(4, 'Bagas', 23, 'Laki-laki', 5),
(5, 'Sinta', 19, 'Perempuan', 3),
(6, 'Fajar', 20, 'Laki-laki', 7)
")
## [1] 6
# Data Transaksi
dbExecute(server, "
INSERT INTO Transaksi
(id_transaksi, id_pelanggan, id_menu, tanggal, jumlah, total_harga) VALUES
(1, 1, 1, '2025-01-10', 2, 30000),
(2, 2, 2, '2025-01-11', 1, 20000),
(3, 3, 3, '2025-01-12', 3, 54000),
(4, 4, 4, '2025-01-13', 1, 17000),
(5, 5, 1, '2025-01-14', 2, 30000),
(6, 6, 7, '2025-01-15', 1, 12000)
")
## [1] 6
menu <- dbGetQuery(server, "SELECT * FROM Menu;")
pelanggan <- dbGetQuery(server, "SELECT * FROM Pelanggan;")
transaksi <- dbGetQuery(server, "SELECT * FROM Transaksi;")
print(menu)
## id_menu nama_menu kategori harga
## 1 1 Ayam Geprek Original Makanan 15000
## 2 2 Ayam Geprek Keju Makanan 20000
## 3 3 Ayam Geprek Sambal Hijau Makanan 18000
## 4 4 Ayam Geprek Level 5 Makanan 17000
## 5 5 Es Teh Manis Minuman 5000
## 6 6 Es Jeruk Minuman 7000
## 7 7 Jus Alpukat Minuman 12000
## 8 8 Nasi Tambah Tambahan 5000
print(pelanggan)
## id_pelanggan nama_pelanggan umur jenis_kelamin frekuensi_kunjungan
## 1 1 Rizky 20 Laki-laki 6
## 2 2 Aulia 21 Perempuan 8
## 3 3 Dewi 22 Perempuan 4
## 4 4 Bagas 23 Laki-laki 5
## 5 5 Sinta 19 Perempuan 3
## 6 6 Fajar 20 Laki-laki 7
print(transaksi)
## id_transaksi id_pelanggan id_menu tanggal jumlah total_harga
## 1 1 1 1 2025-01-10 2 30000
## 2 2 2 2 2025-01-11 1 20000
## 3 3 3 3 2025-01-12 3 54000
## 4 4 4 4 2025-01-13 1 17000
## 5 5 5 1 2025-01-14 2 30000
## 6 6 6 7 2025-01-15 1 12000
# Urut jumlah ASC
urutan_kecil_besar <- dbGetQuery(server, "
SELECT * FROM Transaksi
ORDER BY jumlah ASC;
")
print(urutan_kecil_besar)
## id_transaksi id_pelanggan id_menu tanggal jumlah total_harga
## 1 2 2 2 2025-01-11 1 20000
## 2 4 4 4 2025-01-13 1 17000
## 3 6 6 7 2025-01-15 1 12000
## 4 1 1 1 2025-01-10 2 30000
## 5 5 5 1 2025-01-14 2 30000
## 6 3 3 3 2025-01-12 3 54000
# Urut jumlah DESC
urutan_besar_kecil <- dbGetQuery(server, "
SELECT * FROM Transaksi
ORDER BY jumlah DESC;
")
print(urutan_besar_kecil)
## id_transaksi id_pelanggan id_menu tanggal jumlah total_harga
## 1 3 3 3 2025-01-12 3 54000
## 2 1 1 1 2025-01-10 2 30000
## 3 5 5 1 2025-01-14 2 30000
## 4 2 2 2 2025-01-11 1 20000
## 5 4 4 4 2025-01-13 1 17000
## 6 6 6 7 2025-01-15 1 12000
# Update jumlah transaksi id=2
dbExecute(server, "
UPDATE Transaksi
SET jumlah = 5
WHERE id_transaksi = 2;
")
## [1] 1
dbGetQuery(server, "
SELECT *
FROM Transaksi
WHERE id_transaksi = 2;
")
## id_transaksi id_pelanggan id_menu tanggal jumlah total_harga
## 1 2 2 2 2025-01-11 5 20000
# Delete transaksi id=3
dbExecute(server, "
DELETE FROM Transaksi
WHERE id_transaksi = 3;
")
## [1] 1
dbGetQuery(server, "
SELECT *
FROM Transaksi;
")
## id_transaksi id_pelanggan id_menu tanggal jumlah total_harga
## 1 1 1 1 2025-01-10 2 30000
## 2 2 2 2 2025-01-11 5 20000
## 3 4 4 4 2025-01-13 1 17000
## 4 5 5 1 2025-01-14 2 30000
## 5 6 6 7 2025-01-15 1 12000
# WHERE total_harga > 20000
tampilan_tertentu <- dbGetQuery(server, "
SELECT * FROM Transaksi
WHERE total_harga > 20000;
")
print(tampilan_tertentu)
## id_transaksi id_pelanggan id_menu tanggal jumlah total_harga
## 1 1 1 1 2025-01-10 2 30000
## 2 5 5 1 2025-01-14 2 30000
dbGetQuery(server, "
SELECT
t.id_transaksi,
p.nama_pelanggan AS pelanggan,
m.nama_menu AS menu,
t.tanggal,
t.jumlah,
m.kategori,
t.total_harga
FROM Transaksi t
INNER JOIN Pelanggan p
ON t.id_pelanggan = p.id_pelanggan
INNER JOIN Menu m
ON t.id_menu = m.id_menu;
")
## id_transaksi pelanggan menu tanggal jumlah kategori
## 1 1 Rizky Ayam Geprek Original 2025-01-10 2 Makanan
## 2 2 Aulia Ayam Geprek Keju 2025-01-11 5 Makanan
## 3 4 Bagas Ayam Geprek Level 5 2025-01-13 1 Makanan
## 4 5 Sinta Ayam Geprek Original 2025-01-14 2 Makanan
## 5 6 Fajar Jus Alpukat 2025-01-15 1 Minuman
## total_harga
## 1 30000
## 2 20000
## 3 17000
## 4 30000
## 5 12000
and_operator <- dbGetQuery(server, "
SELECT *
FROM Transaksi
WHERE total_harga > 20000
AND jumlah >= 2;
")
print(and_operator)
## id_transaksi id_pelanggan id_menu tanggal jumlah total_harga
## 1 1 1 1 2025-01-10 2 30000
## 2 5 5 1 2025-01-14 2 30000
dbListTables(server) # daftar tabel
## [1] "menu" "pelanggan" "transaksi"
dbGetQuery(server, "SELECT * FROM pelanggan")
## id_pelanggan nama_pelanggan umur jenis_kelamin frekuensi_kunjungan
## 1 1 Rizky 20 Laki-laki 6
## 2 2 Aulia 21 Perempuan 8
## 3 3 Dewi 22 Perempuan 4
## 4 4 Bagas 23 Laki-laki 5
## 5 5 Sinta 19 Perempuan 3
## 6 6 Fajar 20 Laki-laki 7
rata_pembelian <- dbGetQuery(server, "
SELECT AVG(total_harga) AS rata_rata_pembelian
FROM Transaksi;
")
print(rata_pembelian)
## rata_rata_pembelian
## 1 21800
rata_rata_transaksi <- dbGetQuery(server, "
SELECT
SUM(total_harga) AS total_pendapatan,
AVG(total_harga) AS rata_rata_pembelian
FROM Transaksi;
")
print(rata_rata_transaksi)
## total_pendapatan rata_rata_pembelian
## 1 109000 21800
#Query laporan akhir
query_laporan <- "
SELECT
t.id_transaksi,
p.nama_pelanggan AS pelanggan,
m.nama_menu AS menu,
m.kategori,
t.tanggal,
t.jumlah,
t.total_harga
FROM Transaksi t
JOIN Pelanggan p
ON t.id_pelanggan = p.id_pelanggan
JOIN Menu m
ON t.id_menu = m.id_menu
ORDER BY t.tanggal;
"
laporan <- dbGetQuery(server, query_laporan)
print(laporan)
## id_transaksi pelanggan menu kategori tanggal jumlah
## 1 1 Rizky Ayam Geprek Original Makanan 2025-01-10 2
## 2 2 Aulia Ayam Geprek Keju Makanan 2025-01-11 5
## 3 4 Bagas Ayam Geprek Level 5 Makanan 2025-01-13 1
## 4 5 Sinta Ayam Geprek Original Makanan 2025-01-14 2
## 5 6 Fajar Jus Alpukat Minuman 2025-01-15 1
## total_harga
## 1 30000
## 2 20000
## 3 17000
## 4 30000
## 5 12000