Proyek Akhir: Laporan Penjualan Toko Buku BukuKita
Menggabungkan semua ilmu: JOIN, GROUP BY, subquery/CTE, LEFT JOIN, dan window function untuk menjawab lima pertanyaan bisnis pemilik toko. Ditutup dengan peta belajar berikutnya.
Analogi: Proyek akhir ini seperti ujian praktik mengemudi (SIM). Kamu sudah belajar teori di tiap bab; sekarang kamu membuktikan bisa menjalankannya di jalan sungguhan, dengan pertanyaan bisnis nyata dari pemilik toko, bukan soal hafalan.
Selamat, kamu sudah sampai di proyek akhir!
Pemilik toko BukuKita meminta laporan dari databasenya. Kamu sudah punya semua alat: SELECT, WHERE, JOIN, GROUP BY, subquery, CTE, window function. Sekarang saatnya memakai semuanya pada kasus nyata.
Ingat peta database
kategori (id, nama)
buku (id, judul, penulis, kategori_id, harga, stok, tahun)
pelanggan (id, nama, kota, email, tgl_daftar)
pesanan (id, pelanggan_id, tanggal, status)
detail_pesanan (id, pesanan_id, buku_id, jumlah, harga_satuan)
Lima pertanyaan pemilik toko
- Pendapatan: "Berapa total pendapatan dari pesanan yang sudah lunas?" (kolom
pendapatan) - Pelanggan terbaik: "Siapa 3 pelanggan dengan belanja (pesanan lunas) terbesar?" (kolom
nama,total_belanja) - Kategori terlaris: "Pendapatan (pesanan lunas) per kategori buku, dari yang terbesar." (kolom
kategori,pendapatan) - Buku mati: "Buku apa saja yang belum pernah terjual sama sekali?" (kolom
judul, urut abjad) - Buku terlaris: "5 buku dengan jumlah eksemplar terjual terbanyak beserta peringkatnya." (kolom
judul,terjual,peringkat)
Strategi menyelesaikan query rumit
- Tulis tujuan dalam kalimat. "Total per kategori, hanya pesanan lunas."
- Tentukan tabel yang terlibat dan jalur JOIN-nya: detail → pesanan (status), detail → buku → kategori.
- Bangun bertahap: mulai dari JOIN saja (
SELECT *), lalu tambah WHERE, lalu GROUP BY dan agregat, terakhir ORDER BY/LIMIT. - Cek hasil dengan akal sehat. Hasilnya masuk akal? Totalnya mendekati perkiraanmu?
Ingat rumus subtotal: jumlah * harga_satuan pada tabel detail_pesanan. Pendapatan hanya dihitung dari pesanan dengan status 'lunas'.
Setelah ini, belajar apa?
- Desain database: diagram ERD, normalisasi lanjut, strategi migrasi skema.
- Performa: EXPLAIN ANALYZE, partial index, partisi tabel, tuning konfigurasi.
- Fitur lanjut PostgreSQL: function & stored procedure (PL/pgSQL), trigger, JSONB, full-text search, PostGIS.
- Operasional: replikasi, high availability, backup berkala (pgBackRest), monitoring.
- Integrasi aplikasi: Laravel/Eloquent, Prisma, SQLAlchemy, node-postgres. Cobalah menyambungkan PostgreSQL ke proyek webmu.
Lulus bab ini, ambil kuis akhir, dan raih sertifikatmu. Semangat!
Kasus nyata: presentasi hasil kepada pemilik toko
Di proyek akhir, kamu berperan sebagai analis data BukuKita. Pola kerja profesional yang sebaiknya kamu tiru: (1) pahami pertanyaan bisnis, (2) lihat struktur tabel dengan \d, (3) bangun query bertahap, mulai dari SELECT sederhana, tambah JOIN, lalu agregat, (4) verifikasi angka dengan hitungan manual pada sampel kecil, (5) simpan sebagai view agar bisa dipakai ulang. Portofolio seperti ini bisa kamu tampilkan saat melamar kerja sebagai data analyst atau backend developer.
Kesalahan yang sering terjadi
- Langsung menulis query panjang sekaligus. Bangun bertahap dan cek hasil di setiap langkah.
- Tidak memeriksa NULL dan duplikat sebelum menyimpulkan angka.
- Melaporkan angka tanpa membandingkannya dengan sumber lain. Selalu lakukan sanity check.