0% found this document useful (0 votes)
13 views8 pages

Tugas Basis Data Lanjut

basis data

Uploaded by

saepudinwae110
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views8 pages

Tugas Basis Data Lanjut

basis data

Uploaded by

saepudinwae110
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

TUGAS BASIS DATA LANJUT

NAMA :AL-FAHMI
KELAS :3C
NPM :2371020002

#Buat Database
CREATE DATABASE dbpenjualanonline

#Untuk menggunakan database


USE dbpenjualanonline

#Buat Table
CREATE TABLE customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
nama VARCHAR(50),
email VARCHAR(100),
phone VARCHAR(15),
address VARCHAR(100),
city VARCHAR(50),
state VARCHAR(5),
postal_code VARCHAR(10)
);

#Buat Isi Table Customers


SELECT * FROM customers

INSERT INTO customers (nama, email, phone, address, city, state, postal_code)
VALUES
('John Doe', '[email protected]', '1234567890', '123 Maple St.', 'New York',
'NY', '10001'),
('Jane Smith', '[email protected]', '0987654321', '456 Oak Ave.',
'Boston', 'MA', '02118'),
('Mark Johnson', '[email protected]', '1122334455', '789 Pine Dr.',
'Chicago', 'IL', '60601'),
('Emma Watson', '[email protected]', '2233445566', '321 Elm St.', 'Los
Angeles', 'CA', '90001'),
('Michael Brown', '[email protected]', '3344556677', '654 Cedar Ln.',
'Houston', 'TX', '77002'),
('Olivia Wilson', '[email protected]', '4455667788', '987 Birch Blvd.',
'Seattle', 'WA', '98101'),
('Lucas Martinez', '[email protected]', '5566778899', '246 Palm St.',
'Miami', 'FL', '33101'),
('Ava Davis', '[email protected]', '6677889900', '135 Willow Cir.', 'Denver',
'CO', '80201'),
('Noah Anderson', '[email protected]', '7788990011', '369 Fir Way',
'Phoenix', 'AZ', '85001'),
('Sophia Clark', '[email protected]', '8899001122', '753 Redwood Dr.',
'Atlanta', 'GA', '30301');

#Buat Table Product


CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100),
price DECIMAL(10, 2),
stock INT
);

#Buat Isi table products


SELECT * FROM products

INSERT INTO products (product_name, price, stock) VALUES


('Laptop', 1000.00, 50),
('Smartphone', 600.00, 100),
('Headphones', 150.00, 200),
('Monitor', 300.00, 80),
('Keyboard', 50.00, 150),
('Mouse', 25.00, 300),
('External Hard Drive', 120.00, 100),
('Tablet', 500.00, 75),
('Smartwatch', 200.00, 90),
('Printer', 250.00, 60);

#buat Table orders


CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10,2),
FOREIGN KEY(customer_id)
REFERENCES customers(customer_id)
);

#Buat isi table orders


SELECT * FROM orders

INSERT INTO orders (customer_id, order_date, total_amount) VALUES


('1', '2024-09-20', '1600.00'),
('2', '2024-09-21', '650.00'),
('3', '2024-09-22', '300.00'),
('4', '2024-09-23', '1300.00'),
('5', '2024-09-23', '50.00'),
('6', '2024-09-24', '720.00'),
('7', '2024-09-24', '500.00'),
('8', '2024-09-25', '750.00'),
('9', '2024-09-26', '225.00'),
('10', '2024-09-27', '250.00');
#Buat Table order_items
CREATE TABLE order_items (
order_item_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT,
product_id INT,
quantity INT,
price DECIMAL(10,2),
FOREIGN KEY(order_id) REFERENCES orders(order_id),
FOREIGN KEY(product_id) REFERENCES products(product_id)
);

#Buat isi table order_items


SELECT * FROM order_items

INSERT INTO order_items (order_id, product_id, quantity, price) VALUES


('1', '1', '1', '1000.00'),
('1', '3', '2', '150.00'),
('2', '2', '1', '600.00'),
('2', '5', '1', '50.00'),
('3', '4', '1', '300.00'),
('4', '1', '1', '1000.00'),
('4', '8', '1', '300.00'),
('5', '5', '1', '50.00'),
('6', '7', '1', '120.00'),
('6', '9', '3', '200.00');

#buat table payments


CREATE TABLE payments (
payment_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT,
payment_date DATE,
payment_method VARCHAR(50),
payment_status VARCHAR(20),
amount DECIMAL(10,2),
FOREIGN KEY(order_id) REFERENCES orders(order_id)
);

#buat isi table payments


SELECT * FROM payments

INSERT INTO payments (order_id, payment_date, payment_method, payment_status,


amount) VALUES
('1', '2024-09-20', 'Credit Card', 'Completed', '1600.00'),
('2', '2024-09-21', 'PayPal', 'Completed', '650.00'),
('3', '2024-09-22', 'Bank Transfer', 'Pending', '300.00'),
('4', '2024-09-23', 'Credit Card', 'Completed', '1300.00'),
('5', '2024-09-23', 'Credit Card', 'Completed', '50.00'),
('6', '2024-09-24', 'PayPal', 'Completed', '720.00'),
('7', '2024-09-24', 'Bank Transfer', 'Pending', '500.00'),
('8', '2024-09-25', 'Credit Card', 'Completed', '750.00'),
('9', '2024-09-26', 'Credit Card', 'Completed', '225.00'),
('10', '2024-09-27', 'PayPal', 'Completed', '250.00');

#Buat Table Shippings


CREATE TABLE shipping (
shipping_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT,
shipping_date DATE,
shipping_method VARCHAR(20),
tracking_number VARCHAR(20),
shipping_status VARCHAR(20),
shipping_address VARCHAR(100),
shipping_city VARCHAR(50),
shipping_state VARCHAR(2),
shipping_postal_code VARCHAR(10),
FOREIGN KEY(order_id) REFERENCES orders(order_id)
);

#buat isi table shippings


SELECT * FROM shipping

INSERT INTO shipping (order_id, shipping_date, shipping_method,


tracking_number, shipping_status, shipping_address, shipping_city,
shipping_state, shipping_postal_code)VALUES
('1', '2024-09-21', 'FedEx', '123456789ABC', 'Shipped', '123 Maple St.',
'New York', 'NY', '10001'),
('2', '2024-09-22', 'UPS', '987654321XYZ', 'Shipped', '456 Oak Ave.',
'Boston', 'MA', '02118'),
('3', '2024-09-23', 'DHL', '555666777AAA', 'Processing', '789 Pine Dr.',
'Chicago', 'IL', '60601'),
('4', '2024-09-24', 'FedEx', '444555666BBB', 'Shipped', '321 Elm Rd.',
'Los Angeles', 'CA', '90001'),
('5', '2024-09-24', 'USPS', '333444555CCC', 'Shipped', '654 Cedar Ln.',
'Houston', 'TX', '77002'),
('6', '2024-09-25', 'UPS', '222333444DDD', 'Shipped', '987 Birch Blvd.',
'Seattle', 'WA', '98101'),
('7', '2024-09-25', 'FedEx', '111222333EEE', 'Processing', '246 Palm
St.', 'Miami', 'FL', '33101'),
('8', '2024-09-26', 'DHL', '888999000FFF', 'Shipped', '135 Willow Cir.',
'Denver', 'CO', '80201'),
('9', '2024-09-27', 'UPS', '777888999GGG', 'Shipped', '369 Fir Way',
'Phoenix', 'AZ', '85001'),
('10', '2024-09-28', 'USPS', '666777888HHH', 'Shipped', '753 Redwood
Dr.', 'Atlanta', 'GA', '30301');

#STUDI KASUS MULTIJOIN

# 1.Menampilkan informasi lengkap dari setiap pesanan (Customer, Order,


Product, Payment, dan Shipping):
SELECT
customers.customer_id,
customers.nama,
orders.order_id,
orders.order_date,
products.product_name,
order_items.quantity,
order_items.price,
payments.payment_method,
payments.payment_status,
shipping.shipping_method,
shipping.shipping_status,
shipping.shipping_date
FROM
customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id
INNER JOIN payments ON orders.order_id = payments.order_id
INNER JOIN shipping ON orders.order_id = shipping.order_id
ORDER BY
customers.customer_id, orders.order_id;

# 2. Menampilkan total belanja per customer dengan detail pembayaran dan


pengiriman:
SELECT
customers.customer_id,
customers.nama,
SUM(order_items.price) AS amount ,
payments.payment_method,
payments.payment_status,
shipping.shipping_method,
shipping.shipping_status
FROM
customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN payments ON orders.order_id = payments.order_id
INNER JOIN shipping ON orders.order_id = shipping.order_id
GROUP BY
customers.customer_id,
customers.nama,
payments.payment_method,
payments.payment_status,
shipping.shipping_method,
shipping.shipping_status;

# 3. Menampilkan daftar produk yang dibeli oleh setiap customer termasuk


metode pembayaran dan status pengiriman:
SELECT
customers.customer_id,
customers.nama,
products.product_name,
order_items.quantity,
payments.payment_method,
payments.payment_status,
shipping.shipping_method,
shipping.shipping_status
FROM
customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id
INNER JOIN payments ON orders.order_id = payments.order_id
INNER JOIN shipping ON orders.order_id = shipping.order_id
ORDER BY
customers.customer_id, products.product_name;

# 4. Menampilkan Riwayat Pemesanan dan Produk yang Dibeli dalam Rentang Waktu
Tertentu :

SELECT
customers.customer_id,
customers.nama,
orders.order_id,
orders.order_date,
products.product_name,
order_items.quantity,
order_items.price,
payments.payment_method,
payments.payment_status,
shipping.shipping_method,
shipping.shipping_status
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id
INNER JOIN payments ON orders.order_id = payments.order_id
INNER JOIN shipping ON orders.order_id = shipping.order_id
WHERE
orders.order_date BETWEEN '2024-09-22' AND '2024-09-25'
ORDER BY
orders.order_date;

# 5. Anda diminta untuk menampilkan produk terlaris di database beserta


jumlah unit yang terjual:

SELECT
products.product_id,
products.product_name,
SUM(order_items.quantity) AS total_quantity_sold,
SUM(order_items.price * order_items.quantity) AS total_revenue
FROM
products
INNER JOIN order_items ON products.product_id = order_items.product_id
GROUP BY
products.product_id, products.product_name
ORDER BY
total_quantity_sold DESC;

# STUDY KASUS SUBQUERY


# 1. Menampilkan Produk yang Pernah Dibeli oleh Customer dengan ID Tertentu

SELECT product_name
FROM products
WHERE product_id IN (
SELECT order_items.product_id
FROM order_items
WHERE order_items.order_id IN (
SELECT orders.order_id
FROM orders
WHERE orders.customer_id = 1
)
);

# 2. Menampilkan Order yang Memiliki Jumlah Item Melebihi Rata-rata Semua


Order

SELECT orders.order_id, SUM(order_items.quantity) AS total_items


FROM orders
INNER JOIN order_items ON orders.order_id = order_items.order_id
GROUP BY orders.order_id
HAVING SUM(order_items.quantity) > (
SELECT AVG(total_items)
FROM (
SELECT SUM(order_items.quantity) AS total_items
FROM orders
INNER JOIN order_items ON orders.order_id = order_items.order_id
GROUP BY orders.order_id
) AS order_totals
);

# 3. Menampilkan Customer yang Melakukan Pembelian di Bulan Tertentu

SELECT customer_id, nama


FROM customers
WHERE customer_id IN (
SELECT orders.customer_id
FROM orders
WHERE orders.order_id IN (
SELECT payments.order_id
FROM payments
WHERE MONTH(payments.payment_date) = 9
)
);

# 4. Menampilkan Produk yang Tidak Pernah Dibeli

SELECT product_name
FROM products
WHERE product_id NOT IN (
SELECT product_id
FROM order_items
);
# 5. Menampilkan Produk dengan Harga Lebih Tinggi dari Rata-rata Harga Semua
Produk

SELECT products.product_name, products.price


FROM products
WHERE products.price > (SELECT AVG(products.price) FROM products);

# 6. Menampilkan Customer yang Tidak Pernah Melakukan Pembelian

SELECT customer_id, nama


FROM customers
WHERE customer_id NOT IN (
SELECT customer_id
FROM orders
);

# 7. Menampilkan Jumlah Total Produk yang Dibeli oleh Customer Tertentu

SELECT (
SELECT COUNT(*)
FROM order_items
WHERE order_id IN (
SELECT order_id
FROM orders
WHERE customer_id = 1
)
) AS total_items_bought;

You might also like