) */
.text code,
li code {
background-color: #f1f5f9;
color: #db2777;
padding: 2px 6px;
border-radius: 4px;
font-family: "Fira Code", "Courier New", monospace;
font-size: 14px;
}
/* ---------- Tabel ---------- */
.article-container table {
width: 100%;
overflow-wrap: break-word;
border-collapse: collapse;
margin: 20px 0;
font-size: 14.5px;
}
.article-container table th {
background-color: #dbeafe;
color: #1e3a8a;
text-align: left;
padding: 12px 14px;
font-weight: 700;
}
.article-container table td {
padding: 12px 14px;
border-bottom: 1px solid #e5e7eb;
color: #374151;
}
.article-container table tr:hover td {
background-color: #f9fafb;
}
/* ---------- Gambar / Screenshot ---------- */
.article-image {
margin: 20px 0;
text-align: center;
}
.article-image img {
max-width: 100%;
border: 1px solid #e5e7eb;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
/* ---------- Workflow Diagram ---------- */
.workflow {
background-color: #f8fafc;
border: 1px dashed #94a3b8;
border-radius: 10px;
padding: 24px;
margin: 20px 0;
text-align: center;
font-size: 16px;
color: #1e293b;
line-height: 2.2;
}
/* ---------- Garis Pemisah ---------- */
.article-container hr {
border: none;
border-top: 1px solid #e5e7eb;
margin: 32px 0;
}
/* ---------- Link Penulis ---------- */
.article-container a {
color: #2563eb;
text-decoration: none;
font-weight: 600;
}
.article-container a:hover {
text-decoration: underline;
}
/* ---------- Responsive (Mobile) ---------- */
@media (max-width: 640px) {
.article-container {
padding: 16px;
font-size: 15px;
}
.article-container > .section-title:first-child {
font-size: 22px;
}
.section-title {
font-size: 19px;
}
.article-container table {
font-size: 13px;
}
pre {
font-size: 12px;
}
}
Business Question: Cara Menyusun Pertanyaan Data yang Tajam
Pernah nggak sih dikasih pertanyaan dari tim bisnis kayak gini: "Kayaknya penjualan bulan ini turun deh,
kenapa ya?" atau "Customer kita masih pada aktif belanja nggak sih?". Kedengarannya simpel, tapi begitu
kamu buka database, kamu malah bingung harus mulai query dari mana. Kolom mana yang dipakai? Periode
yang dibandingin yang mana? Ukurannya pakai apa?
Ini masalah klasik yang sering dialami data analyst: dapet pertanyaan bisnis yang masih mentah, terus
bingung nerjemahinnya jadi query. Di artikel ini kita bahas cara nyusun business question yang
tajam, biar setiap kali dapet request dari tim bisnis, kamu langsung tahu harus mulai dari mana.
Masalahnya bukan di skill SQL kamu, tapi di pertanyaannya sendiri yang masih terlalu umum.
Sebelum nulis satu baris query pun, seorang data analyst perlu jago dulu ngubah pertanyaan yang vague
itu jadi Business Question yang spesifik dan bisa dijawab dengan data.
💡 Emang Kenapa Sih Business Question Itu Penting?
- Bikin analisis kamu fokus, nggak muter-muter nyari "yang penting ada insight".
- Ngirit waktu, karena kamu nggak perlu query ulang gara-gara salah arah dari awal.
- Jadi dasar buat nentuin metrik dan tabel mana yang perlu dipakai.
- Bikin hasil analisis kamu nyambung sama kebutuhan stakeholder, bukan cuma "angka doang".
- Salah satu skill yang paling sering dites pas interview data analyst.
Business Question vs Pertanyaan Bisnis Biasa
Nggak semua pertanyaan dari tim bisnis otomatis jadi business question yang bagus. Business question yang
baik itu biasanya punya 4 ciri ini:
Kriteria
Contoh Buruk
Contoh Baik
Specific (spesifik)
"Penjualan turun kenapa?"
"Kategori Elektronik turun berapa persen?"
Measurable (terukur)
"Customer kita gimana?"
"Berapa customer yang tidak order lebih dari 20 hari?"
Time-bound (ada rentang waktu)
"Kontribusi kota gimana?"
"Kontribusi revenue per kota selama Juni-Juli 2026?"
Actionable (bisa ditindaklanjuti)
"Data kita banyak banget"
"Kota mana yang perlu promosi tambahan?"
Business Question yang baik biasanya dipakai buat hal-hal berikut:
- Menentukan prioritas analisis sebelum buka dashboard/database
- Briefing antara data analyst dan tim bisnis/stakeholder
- Menyusun laporan yang langsung nyambung ke keputusan, bukan sekadar angka
- Validasi apakah data yang ada cukup buat menjawab kebutuhan bisnis
Framework Buat Mempertajam Business Question
Salah satu cara paling gampang buat ngubah pertanyaan vague jadi tajam adalah pakai
5W1H (What, Why, Who, When, Where, How). Intinya, tiap kali dapet pertanyaan mentah dari tim bisnis,
coba tanya balik hal-hal ini:
- What — Metrik apa yang mau diukur? (revenue, jumlah unit, jumlah customer, dst)
- Who — Objek yang dianalisis siapa/apa? (produk, customer, kategori, kota)
- When — Periode waktunya kapan, dan dibandingin sama periode apa?
- Where — Cakupannya di mana? (semua data, atau per segmen tertentu)
- How — Diukur/dihitung pakai cara apa? (total, rata-rata, persentase perubahan)
Biar makin ngerti:
- Nggak semua pertanyaan butuh dijawab pakai kelima elemen 5W1H sekaligus.
- Yang paling wajib biasanya What (metrik) dan When (periode), karena tanpa dua ini query jadi susah dibikin.
- Kalau bisa, business question yang tajam sebaiknya bisa langsung "dibayangkan" jadi satu query SQL.
1. Siapin Tools-nya Dulu
Sama kayak praktik di artikel Analisis Top-N dengan SQL, kita pakai SQLite lewat Python
(library sqlite3 bawaan Python) plus pandas biar hasil query gampang dibaca dalam bentuk
tabel. Kalau kamu pakai Google Colab, tinggal import aja, nggak perlu install apa-apa.
Import Library
import sqlite3
import pandas as pd
2. Siapin Dataset-nya
Kita pakai dataset toko online yang sama dengan artikel Top-N Analysis: 4 tabel
(customers, products, orders, order_items), tapi kali ini datanya mencakup 2 bulan (Juni & Juli 2026) dan beberapa kota berbeda, biar bisa dipakai buat contoh
business question soal perbandingan periode dan perbandingan wilayah.
conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.executescript("""
CREATE TABLE customers (
customer_id INTEGER PRIMARY KEY,
customer_name TEXT,
city TEXT
);
CREATE TABLE products (
product_id INTEGER PRIMARY KEY,
product_name TEXT,
category TEXT,
price INTEGER
);
CREATE TABLE orders (
order_id INTEGER PRIMARY KEY,
customer_id INTEGER,
order_date TEXT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
CREATE TABLE order_items (
order_item_id INTEGER PRIMARY KEY,
order_id INTEGER,
product_id INTEGER,
quantity INTEGER,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
""")
conn.commit()
print("Tabel berhasil dibuat")
Lanjut, kita isi tabelnya dengan data dummy (bisa langsung copy dari notebook praktik). Ada order dari
bulan Juni dan Juli, dari beberapa kota, dengan kategori produk yang sengaja dibuat naik-turun biar
hasil analisisnya kerasa nyata.
Catatan: Insert data lengkapnya ada di notebook. Bagian ini nggak perlu di-screenshot, cukup jalanin aja.
3. Studi Kasus 1: Dari Pertanyaan Vague ke Business Question yang Tajam
Pertanyaan mentah dari tim bisnis:
"Kayaknya penjualan bulan ini turun deh, kenapa ya?"
Kalau langsung dijawab tanpa dipertajam, kamu bakal bingung mau query apa. Makanya, kita pertajam dulu
pakai 5W1H:
Pertanyaan Jawaban Turun di mana (Who)? Perlu dicek per kategori produk Turun dibanding apa (When)? Bulan Juni 2026 vs Juli 2026 Diukur pakai apa (How)? Total revenue
Business question yang sudah tajam:
"Kategori produk apa yang mengalami penurunan revenue terbesar pada bulan Juli 2026 dibanding
Juni 2026?"
Sekarang kita buktikan pertanyaan ini beneran bisa dijawab lewat query:
Query Perbandingan Revenue per Kategori (Juni vs Juli)
query_penurunan_kategori = """
WITH revenue_juni AS (
SELECT p.category, SUM(oi.quantity * p.price) AS revenue_juni
FROM order_items oi
JOIN orders o ON oi.order_id = o.order_id
JOIN products p ON oi.product_id = p.product_id
WHERE o.order_date BETWEEN '2026-06-01' AND '2026-06-30'
GROUP BY p.category
),
revenue_juli AS (
SELECT p.category, SUM(oi.quantity * p.price) AS revenue_juli
FROM order_items oi
JOIN orders o ON oi.order_id = o.order_id
JOIN products p ON oi.product_id = p.product_id
WHERE o.order_date BETWEEN '2026-07-01' AND '2026-07-31'
GROUP BY p.category
)
SELECT
j.category,
j.revenue_juni,
COALESCE(l.revenue_juli, 0) AS revenue_juli,
COALESCE(l.revenue_juli, 0) - j.revenue_juni AS selisih,
ROUND((COALESCE(l.revenue_juli, 0) - j.revenue_juni) * 100.0 / j.revenue_juni, 1) AS persen_perubahan
FROM revenue_juni j
LEFT JOIN revenue_juli l ON j.category = l.category
ORDER BY persen_perubahan ASC;
"""
pd.read_sql_query(query_penurunan_kategori, conn)
Jalanin query di atas, hasilnya bakal keluar tabel perbandingan revenue tiap kategori antara Juni dan Juli,
lengkap sama persentase perubahannya.

Cara baca hasilnya: kategori dengan angka persen_perubahan paling negatif adalah kategori
yang penurunannya paling parah. Inilah jawaban konkret dari business question yang tadinya cuma
"penjualan turun kenapa ya?".
Mau Kuasai Business Question: Cara Menyusun Pertanyaan Data yang Tajam Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
4. Studi Kasus 2: Business Question soal Customer Berisiko Churn
Pertanyaan mentah dari tim bisnis:
"Customer kita masih pada aktif belanja nggak sih?"
Pertanyaan Jawaban Siapa yang dimaksud (Who)? Customer yang pernah order "Aktif" diukur gimana (How)? Dilihat dari tanggal order terakhir Threshold-nya berapa (When)? Belum order lagi lebih dari 20 hari sejak order terakhir di dataset (27 Juli 2026)
Business question yang sudah tajam:
"Customer mana saja yang belum melakukan order lebih dari 20 hari sejak tanggal transaksi
terakhirnya (per 27 Juli 2026)?"
Query Deteksi Customer Berisiko Churn
query_churn_risk = """
SELECT
c.customer_name,
c.city,
MAX(o.order_date) AS order_terakhir,
CAST(julianday('2026-07-27') - julianday(MAX(o.order_date)) AS INTEGER) AS hari_sejak_order_terakhir
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_id, c.customer_name, c.city
HAVING hari_sejak_order_terakhir > 20
ORDER BY hari_sejak_order_terakhir DESC;
"""
pd.read_sql_query(query_churn_risk, conn)

Cara baca hasilnya: customer yang muncul di daftar ini adalah kandidat yang perlu di-follow up,
misalnya dikirim promo atau reminder, karena udah lama nggak bertransaksi.
5. Studi Kasus 3: Business Question soal Kontribusi Kota
Pertanyaan mentah dari tim bisnis:
"Ekspansi kita ke berbagai kota udah bagus belum ya hasilnya?"
Pertanyaan Jawaban Diukur pakai apa (How)? Total revenue per kota Periode apa (When)? Sepanjang data yang ada (Juni-Juli 2026) Buat keputusan apa? Menentukan kota mana yang kontribusinya paling kecil
Business question yang sudah tajam:
"Kota mana yang memberikan kontribusi revenue paling kecil sepanjang Juni-Juli 2026?"
Query Revenue per Kota
query_revenue_per_kota = """
SELECT
c.city,
SUM(oi.quantity * p.price) AS total_revenue,
COUNT(DISTINCT o.order_id) AS jumlah_order
FROM order_items oi
JOIN orders o ON oi.order_id = o.order_id
JOIN customers c ON o.customer_id = c.customer_id
JOIN products p ON oi.product_id = p.product_id
GROUP BY c.city
ORDER BY total_revenue ASC;
"""
pd.read_sql_query(query_revenue_per_kota, conn)

Cara baca hasilnya: kota yang muncul paling atas (revenue terkecil) adalah kandidat evaluasi —
apakah perlu promosi lokal tambahan, atau memang pasarnya belum berkembang.
6. Kesalahan yang Sering Terjadi
- Langsung buka SQL/dashboard tanpa nulis dulu business question-nya secara eksplisit.
- Business question kebanyakan elemen sekaligus, jadi susah diterjemahkan ke satu query.
- Nggak nentuin periode waktu pembanding, jadi hasil "naik/turun" nggak ada patokannya.
- Metrik yang dipakai nggak sesuai kebutuhan (misalnya pakai jumlah unit padahal yang dicari itu dampak ke revenue).
Biar Nggak Lupa, Ini Rangkumannya
Elemen Fungsi Contoh What Menentukan metrik yang mau diukur Revenue, jumlah customer, jumlah order When Menentukan periode dan pembanding Juni 2026 vs Juli 2026 Who Menentukan objek yang dianalisis Kategori produk, customer, kota How Menentukan cara pengukuran Total, rata-rata, persentase perubahan
Kalau Digabung, Alurnya Kayak Gini
🗣️ Masalah Bisnis (masih vague)
⬇
🔍 Pertajam pakai 5W1H (What, Who, When, Where, How)
⬇
🎯 Business Question (spesifik & terukur)
⬇
🧮 Terjemahkan ke Query SQL
⬇
✅ Insight & Rekomendasi Aksi 📝 Catatan Dikit
Business question yang bagus itu nggak harus rumit. Justru semakin sederhana dan spesifik, semakin
gampang diterjemahkan jadi query. Kalau kamu masih ragu, coba tes: "Kalau pertanyaan ini aku
terjemahkan ke SQL, kira-kira query-nya kayak apa?" Kalau kamu bisa bayangin query-nya, berarti
business question-nya udah cukup tajam.
Abis Ini Belajar Apa Lagi?
🚀 Kalau udah pede sama Business Question, lanjut aja ke materi-materi ini:
- Analisis Top-N dengan SQL: Produk Terlaris, Customer Terbesar
- Cara Menjawab Business Question dengan Kombinasi SQL dan Python
- Analisis Cohort & Customer Retention pakai SQL
- Laporan Analisis Data: Struktur dan Format Profesional
Materi-materi ini lanjutan yang natural setelah kamu jago nyusun business question, karena
selanjutnya tinggal fokus ke teknik query dan cara mengemas hasilnya jadi laporan.
Penutup
Sebelum buru-buru buka SQL atau dashboard, luangin waktu dulu buat mikirin: business question apa yang
sebenarnya mau dijawab? Pertanyaan yang tajam bakal ngirit waktu kamu dan bikin hasil analisis lebih
nyambung sama kebutuhan bisnis.
Coba deh mulai biasain, tiap kali dapet request dari tim bisnis, jangan langsung ngoding. Tulis dulu
business question-nya, cek pakai 5W1H, baru abis itu buka database.
🎉 Keren!
Sekarang kamu udah paham cara mengubah pertanyaan bisnis yang vague jadi business question yang
spesifik dan bisa dijawab dengan data, lengkap dengan 3 studi kasus praktik dari penurunan
revenue, customer churn, sampai kontribusi kota. Ini modal penting sebelum lanjut ke analisis
SQL yang lebih kompleks.
Ditulis oleh Aziz Achmad Juniar
Mau Kuasai Business Question: Cara Menyusun Pertanyaan Data yang Tajam Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →