STUDI KASUS + PRAKTIK MYSQL UNTUK DATA ANALYST

database mysql

(Disertai Penjelasan Lengkap)**

Studi kasus: Analisis penjualan toko online “MegaStore”.
Tujuannya: mempelajari proses data analyst dari nol → membuat database → query dasar → analisis → advanced query.


1. Membuat Database

📝 Keterangan:

Database adalah wadah utama untuk menyimpan semua tabel.

✔ Query:

CREATE DATABASE megastore;
USE megastore;

📌 Hasil:

Database “megastore” berhasil dibuat dan dipilih untuk digunakan.


2. Membuat Tabel

Kami butuh tiga tabel: customers, products, dan sales.


2.1. Tabel customers

📝 Keterangan:

Menyimpan data pelanggan.

  • customer_id → Primary key (unique).
  • name → Nama pelanggan.
  • city → Kota pelanggan.
  • join_date → Tanggal bergabung.

✔ Query:

CREATE TABLE customers (
    customer_id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    city VARCHAR(50),
    join_date DATE
);

2.2. Tabel products

📝 Keterangan:

Menyimpan daftar produk.

  • product_name → Nama produk
  • category → Kategori (Elektronik, Aksesoris, dll)
  • price → Harga

✔ Query:

CREATE TABLE products (
    product_id INT PRIMARY KEY AUTO_INCREMENT,
    product_name VARCHAR(100),
    category VARCHAR(50),
    price DECIMAL(12,2)
);

2.3. Tabel sales

📝 Keterangan:

Menyimpan transaksi penjualan.
Memiliki foreign key karena setiap transaksi pasti terkait customer dan product.

✔ Query:

CREATE TABLE sales (
    sale_id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT,
    product_id INT,
    quantity INT,
    sale_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);

3. Mengisi Data


3.1. Mengisi tabel customers

📝 Keterangan:

Menambahkan contoh data pelanggan.

✔ Query:

INSERT INTO customers (name, city, join_date) VALUES
('Andi', 'Jakarta', '2024-01-10'),
('Budi', 'Bandung', '2024-02-01'),
('Citra', 'Surabaya', '2024-02-15'),
('Dewi', 'Jakarta', '2024-03-01');

3.2. Mengisi tabel products

📝 Keterangan:

Menambahkan produk dengan kategori dan harga.

✔ Query:

INSERT INTO products (product_name, category, price) VALUES
('Laptop Lenovo', 'Elektronik', 8500000),
('Mouse Logitech', 'Aksesoris', 250000),
('Keyboard RGB', 'Aksesoris', 550000),
('Printer Epson', 'Elektronik', 2300000);

3.3. Mengisi tabel sales

📝 Keterangan:

Menambahkan data transaksi. Setiap baris adalah pembelian oleh pelanggan (“quantity” = jumlah beli).

✔ Query:

INSERT INTO sales (customer_id, product_id, quantity, sale_date) VALUES
(1, 1, 1, '2024-04-01'),
(1, 2, 2, '2024-04-02'),
(2, 3, 1, '2024-04-02'),
(3, 4, 1, '2024-04-05'),
(4, 1, 1, '2024-04-10'),
(4, 3, 3, '2024-04-11');

🔍 4. Query Dasar


4.1. Menampilkan semua data

📝 Keterangan:

Untuk melihat isi tabel.

✔ Query:

SELECT * FROM customers;
SELECT * FROM products;
SELECT * FROM sales;

4.2. Menampilkan transaksi lengkap dengan total harga

📝 Keterangan:

Join 3 tabel → hitung total harga (quantity × price).

✔ Query:

SELECT 
    s.sale_id,
    c.name AS customer_name,
    p.product_name,
    s.quantity,
    p.price,
    (s.quantity * p.price) AS total_amount
FROM sales s
JOIN customers c ON s.customer_id = c.customer_id
JOIN products p ON s.product_id = p.product_id;

📌 Hasil:

Menampilkan daftar transaksi dengan nama customer, nama produk, jumlah beli, harga satuan, dan total.


📊 5. Analisis Data


5.1. Total revenue keseluruhan

📝 Keterangan:

Menghitung total semua penjualan.

✔ Query:

SELECT 
    SUM(s.quantity * p.price) AS total_revenue
FROM sales s
JOIN products p ON s.product_id = p.product_id;

5.2. Revenue per kategori

📝 Keterangan:

Hitung pendapatan per kategori produk (Elektronik, Aksesoris).

✔ Query:

SELECT 
    p.category,
    SUM(s.quantity * p.price) AS revenue
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY p.category;

5.3. Produk paling laku

📝 Keterangan:

Menghitung jumlah barang terjual per produk.

✔ Query:

SELECT 
    p.product_name,
    SUM(s.quantity) AS total_sold
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY p.product_id
ORDER BY total_sold DESC
LIMIT 1;

5.4. Kota penyumbang revenue terbesar

📝 Keterangan:

Mengelompokkan penjualan berdasarkan kota pelanggan.

✔ Query:

SELECT 
    c.city,
    SUM(s.quantity * p.price) AS revenue
FROM sales s
JOIN customers c ON s.customer_id = c.customer_id
JOIN products p ON s.product_id = p.product_id
GROUP BY c.city
ORDER BY revenue DESC;

5.5. Tren penjualan harian

📝 Keterangan:

Melihat total pendapatan per tanggal.

✔ Query:

SELECT 
    sale_date,
    SUM(quantity * price) AS daily_revenue
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY sale_date
ORDER BY sale_date;

🧼 6. Data Cleaning SQL


6.1. Mengecek duplikasi

📝 Keterangan:

Mengecek apakah ada pelanggan yang namanya sama.

✔ Query:

SELECT 
    name, city, COUNT(*) 
FROM customers
GROUP BY name, city
HAVING COUNT(*) > 1;

6.2. Mengecek nilai NULL

✔ Query:

SELECT * FROM sales WHERE quantity IS NULL;

6.3. Update harga (misal naik 10%)

✔ Query:

UPDATE products 
SET price = price * 1.1 
WHERE category = 'Aksesoris';

📈 7. Analisis Lanjutan (RFM Analysis)


7.1. Recency

📝 Keterangan:

Seberapa lama sejak terakhir beli.

✔ Query:

SELECT
    customer_id,
    DATEDIFF(CURDATE(), MAX(sale_date)) AS recency
FROM sales
GROUP BY customer_id;

7.2. Frequency

✔ Query:

SELECT 
    customer_id,
    COUNT(*) AS frequency
FROM sales
GROUP BY customer_id;

7.3. Monetary

✔ Query:

SELECT 
    s.customer_id,
    SUM(s.quantity * p.price) AS monetary
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY customer_id;

🏗 8. Membuat View untuk Dashboard BI

📝 Keterangan:

View memudahkan Power BI/Tableau mengambil data.

✔ Query:

CREATE VIEW vw_sales_summary AS
SELECT 
    c.name,
    c.city,
    p.product_name,
    p.category,
    s.quantity,
    (s.quantity * p.price) AS total_amount,
    s.sale_date
FROM sales s
JOIN customers c ON s.customer_id = c.customer_id
JOIN products p ON s.product_id = p.product_id;

Leave a Reply

Your email address will not be published. Required fields are marked *