Brief-nya
Toko Kita adalah toko online kecil di Indonesia yang menjual kopi, peralatan dapur, alat tulis, perlengkapan rumah, dan beberapa barang elektronik. Semua pesanannya tersimpan di database PostgreSQL, dan selama ini satu-satunya cara mendapatkan angka dari sana adalah bertanya ke satu orang yang tahu letak semuanya. Kamu baru saja bergabung, dan tiga tim masing-masing sudah mengirim permintaan.
Tim marketing ingin daftar pelanggan terbaik mereka. Pemilik toko ingin laporan pendapatan bulanan yang menunjukkan bagaimana tahun ini terbangun bulan demi bulan. Dan gudang ingin daftar pendek setiap Senin berisi produk yang perlu diperhatikan. Masing-masing cukup satu query, tapi masing-masing butuh beberapa hal dari track SQL bekerja bersama: join, grouping, CTE, window function, dan CASE.
Cara kerja tugas-tugasnya
Setiap tugas dicek otomatis, seperti soal-soal modul: query-mu dijalankan pada database toko dan hasilnya harus cocok, termasuk nama kolom dan urutan barisnya. Tiketnya memberi tahu seperti apa hasilnya, bukan cara menulis query-nya. Ada petunjuk kalau kamu buntu, tapi coba setiap tugas tanpa membuka solusinya dulu.
Tugas-tugasnya
| # | Tugas | Keterampilan utama |
|---|---|---|
| 1 | Pelanggan terbaik | Join, GROUP BY, CTE, ROUND dan cast |
| 2 | Pendapatan bulanan dengan running total | Grouping per bulan, window function (SUM() OVER, LAG) |
| 3 | Laporan restock hari Senin | LEFT JOIN, COALESCE, CASE, filter pada kolom hasil hitungan |
Database-nya
Ini empat tabel yang dipakai tugas-tugasnya:
| Tabel | Kolom |
|---|---|
customers | customer_id, name, email, city, signup_date, segment |
products | product_id, name, category, price, cost, stock |
orders | order_id, customer_id, order_date, status, channel |
order_items | order_id, product_id, quantity, unit_price |
Satu pesanan punya satu baris di orders dan satu baris di order_items untuk setiap produk di dalamnya. Uang untuk satu item adalah quantity * unit_price, memakai harga saat pesanan dibuat (yang tidak selalu sama dengan products.price hari ini). status sebuah pesanan adalah completed, shipped, pending, atau cancelled, dan hanya pesanan completed yang dihitung sebagai penjualan di laporan-laporan ini. Satu hal lagi yang perlu diperhatikan: products.stock bernilai NULL untuk produk yang belum pernah dihitung siapa pun.
Kalau sudah siap, buka Task 1.