JOIN Banyak Tabel + Agregat: Membuat Laporan Penjualan

Menyambung tiga tabel atau lebih dengan JOIN berantai, menghitung pendapatan per produk dengan SUM dan GROUP BY, serta membuat laporan top 5 seperti di dunia kerja.

Part 26 dari 38 ± 50 menit Gratis

Peta data KopiKita

Di dunia nyata, jawaban satu pertanyaan bisnis tersebar di beberapa tabel. Pertanyaan: "Produk apa yang paling banyak menghasilkan uang?" Data yang dibutuhkan:

InformasiLetaknya
Berapa buah terjualdetail_pesanan.jumlah
Harga per buah, nama produkproduk.harga, produk.nama
Apakah pesanan sudah dibayarpesanan.status

Jalurnya: detail_pesanan → pesanan (lewat pesanan_id) dan detail_pesanan → produk (lewat produk_id).

JOIN berantai: tambahkan satu per satu

FROM detail_pesanan d
JOIN pesanan p ON p.id = d.pesanan_id
JOIN produk pr ON pr.id = d.produk_id

Setiap JOIN ... ON ... menambahkan satu tabel baru dan aturan penyambungnya. Tidak ada batas jumlah tabel (praktisnya 3–6 tabel).

Cara membangun query JOIN yang panjang: mulai dari dua tabel dan SELECT *; periksa hasilnya masuk akal; tambahkan tabel ketiga; periksa lagi; baru pilih kolom dan tambahkan agregat. Jangan menulis query besar sekali jadi.

Lengkap dengan agregat

SELECT pr.nama                    AS produk,
       SUM(d.jumlah)              AS total_terjual,
       SUM(d.jumlah * pr.harga)   AS pendapatan
FROM detail_pesanan d
JOIN pesanan p  ON p.id  = d.pesanan_id
JOIN produk  pr ON pr.id = d.produk_id
WHERE p.status = 'lunas'
GROUP BY pr.id, pr.nama
ORDER BY pendapatan DESC
LIMIT 5;
+---------------------+---------------+------------+
| produk              | total_terjual | pendapatan |
+---------------------+---------------+------------+
| Kopi Susu Gula Aren |             7 |     126000 |
| Tumbler KopiKita    |             1 |      75000 |
| Matcha Latte        |             3 |      66000 |
| Nasi Goreng Spesial |             2 |      50000 |
| Americano           |             3 |      45000 |
+---------------------+---------------+------------+

Perhatikan perhitungannya: uang = jumlah × harga dihitung per baris detail, baru dijumlahkan. Kolom pr.id disertakan di GROUP BY agar dua produk bernama sama tidak menyatu.

Tips membaca dan menulis query panjang

  • Satu klausa per baris, JOIN disejajarkan: query berubah dari "tembok teks" menjadi dokumen yang bisa dibaca.
  • Beri alias tabel yang bermakna (d, p, pr) dan awali setiap kolom dengannya.
  • Urutan berpikir: FROM/JOIN (data apa) → WHERE (baris mana) → GROUP BY (dikelompokkan bagaimana) → SELECT (angka apa) → ORDER BY/LIMIT.
  • Sanity check: jumlahkan manual satu produk untuk memastikan angka laporanmu masuk akal.

Query seperti inilah yang membedakan "bisa SQL" dengan "benar-benar berguna bagi bisnis". Setelah bab ini kamu bisa menjawab pertanyaan manajer dengan data, bukan perkiraan.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X