Analisis Penjualan, Customer & Bisnis
60 min
Last updated 24 Mar 2026
Studi Kasus: Analisis Bisnis Toko Online
Hari terakhir ini kita menerapkan semua yang sudah dipelajari untuk menjawab pertanyaan bisnis nyata.
Analisis 1: Dashboard Penjualan
-- Ringkasan performa penjualan bulanan
SELECT
strftime('%Y-%m', tanggal_pesan) AS bulan,
COUNT(*) AS jumlah_transaksi,
SUM(total_harga) AS total_pendapatan,
AVG(total_harga) AS rata_per_transaksi,
COUNT(DISTINCT pelanggan_id) AS pelanggan_unik
FROM pesanan
WHERE status_pesanan = 'selesai'
GROUP BY strftime('%Y-%m', tanggal_pesan)
ORDER BY bulan;
Analisis 2: Customer Segmentation (RFM)
-- Segmentasi pelanggan berdasarkan frekuensi & nilai belanja
WITH pelanggan_stats AS (
SELECT
p.id, p.nama, p.kota,
COUNT(ps.id) AS frekuensi,
SUM(ps.total_harga) AS total_belanja,
MAX(ps.tanggal_pesan) AS terakhir_belanja
FROM pelanggan p
LEFT JOIN pesanan ps ON p.id = ps.pelanggan_id AND ps.status_pesanan = 'selesai'
GROUP BY p.id, p.nama, p.kota
)
SELECT nama, kota, frekuensi, total_belanja,
CASE
WHEN total_belanja > 15000000 THEN '🥇 VIP'
WHEN total_belanja > 5000000 THEN '🥈 Premium'
WHEN total_belanja > 0 THEN '🥉 Regular'
ELSE '💤 Belum Pernah Beli'
END AS segmen
FROM pelanggan_stats
ORDER BY total_belanja DESC;
Analisis 3: Produk Terlaris
-- Top 5 produk berdasarkan revenue
SELECT
pr.nama_produk,
k.nama_kategori,
SUM(dp.jumlah) AS total_unit_terjual,
SUM(dp.subtotal) AS total_revenue,
RANK() OVER (ORDER BY SUM(dp.subtotal) DESC) AS rank_revenue
FROM detail_pesanan dp
JOIN produk pr ON dp.produk_id = pr.id
JOIN kategori k ON pr.kategori_id = k.id
JOIN pesanan ps ON dp.pesanan_id = ps.id
WHERE ps.status_pesanan = 'selesai'
GROUP BY pr.id, pr.nama_produk, k.nama_kategori
ORDER BY total_revenue DESC
LIMIT 5;
🎉Selamat! Kamu telah menyelesaikan SQL Mastery 7 Hari. Dari SELECT dasar hingga Window Functions dan analisis bisnis nyata — kamu sekarang punya pondasi SQL yang kuat!
💡
Notice: Final challenge: Analisis lengkap performa bisnis. Gabungkan semua yang sudah dipelajari.
Assignment
Buat laporan produk per kategori yang menampilkan: nama_kategori, jumlah_produk, harga_terendah, harga_tertinggi, rata_harga, dan total_stok. Urutkan berdasarkan rata_harga tertinggi.
Expected output:
-- Hasil: 5 baris (5 kategori) dengan statistik produk masing-masing
SQL
query.sql
Solution
Output
⏳ Loading DB...