Pertanyaan Wawancara Data Analyst 2026: Panduan Lengkap SQL, Python dan Analytics

Panduan komprehensif pertanyaan wawancara data analyst 2026 mencakup SQL window functions, pandas Python, konsep statistik, dan studi kasus bisnis dengan contoh kode praktis.

Panduan pertanyaan wawancara data analyst 2026 dengan SQL dan Python

Pertanyaan wawancara data analyst pada tahun 2026 menguji tiga area inti: kemahiran SQL, manipulasi data Python, dan pemecahan masalah bisnis. Perusahaan seperti Google, Meta, dan Amazon telah menstandarisasi technical screen mereka berdasarkan keterampilan ini, dengan SQL window functions dan operasi pandas muncul di lebih dari 80% wawancara menurut laporan tren perekrutan Glassdoor 2026.

Apa yang Dicari Pewawancara

Kandidat terkuat menunjukkan tidak hanya pengetahuan sintaks tetapi kemampuan untuk menjelaskan pendekatan analitis mereka. Pewawancara menilai apakah kandidat dapat menerjemahkan pertanyaan bisnis menjadi query teknis dan mengkomunikasikan temuan kepada stakeholder non-teknis.

SQL Window Functions: Topik Wawancara Paling Umum

Window functions muncul di hampir setiap technical screen data analyst. Berbeda dengan aggregate functions yang menggabungkan baris, window functions melakukan kalkulasi di seluruh set baris yang terkait dengan baris saat ini sambil mempertahankan data baris individual.

Pertanyaan: Hitung gaji setiap karyawan sebagai persentase dari total gaji departemen mereka.

sql
-- employee_salary_percentage.sql
SELECT 
    employee_id,
    department,
    salary,
    -- SUM as window function preserves each row
    ROUND(
        salary * 100.0 / SUM(salary) OVER (PARTITION BY department),
        2
    ) AS pct_of_dept_salary
FROM employees
ORDER BY department, pct_of_dept_salary DESC;

Klausa PARTITION BY membuat window terpisah untuk setiap departemen. Gaji setiap karyawan dibagi dengan total departemen mereka, bukan total perusahaan. Perbedaan ini sering menjebak kandidat yang menggunakan subquery atau join sebagai gantinya.

Pertanyaan: Temukan running total penjualan berdasarkan tanggal, direset setiap bulan.

sql
-- monthly_running_total.sql
SELECT
    sale_date,
    amount,
    SUM(amount) OVER (
        PARTITION BY DATE_TRUNC('month', sale_date)
        ORDER BY sale_date
        -- Default frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS monthly_running_total
FROM sales
ORDER BY sale_date;

Pewawancara mengharapkan kandidat mengetahui perilaku default window frame. Tanpa klausa ROWS atau RANGE eksplisit, frame meluas dari awal partisi ke baris saat ini, yang menghasilkan running total. Latih pola-pola ini dengan modul SQL window functions.

CTEs dan Subqueries: Mengorganisir Query Kompleks

Common Table Expressions membuat query mudah dibaca dan dipelihara. Pewawancara menilai apakah kandidat menyusun query secara logis daripada menulis statement monolitik.

Pertanyaan: Temukan pelanggan yang melakukan pembelian di bulan-bulan berturut-turut.

sql
-- consecutive_month_purchasers.sql
WITH monthly_purchases AS (
    -- Step 1: Get distinct customer-month combinations
    SELECT DISTINCT
        customer_id,
        DATE_TRUNC('month', purchase_date) AS purchase_month
    FROM orders
),
with_prev_month AS (
    -- Step 2: Add previous purchase month for each customer
    SELECT
        customer_id,
        purchase_month,
        LAG(purchase_month) OVER (
            PARTITION BY customer_id 
            ORDER BY purchase_month
        ) AS prev_purchase_month
    FROM monthly_purchases
)
-- Step 3: Filter to consecutive months only
SELECT DISTINCT customer_id
FROM with_prev_month
WHERE purchase_month = prev_purchase_month + INTERVAL '1 month';

Pola ini menggabungkan CTEs dengan window function LAG. Memecah query menjadi langkah-langkah bernama mendemonstrasikan proses berpikir, yang dihargai pewawancara sama pentingnya dengan jawaban yang benar.

Python Pandas: Dasar-Dasar Manipulasi Data

Pertanyaan Pandas menguji keterampilan pembersihan data, agregasi, dan transformasi. Pewawancara menyajikan dataset yang berantakan dan meminta kandidat untuk mengekstrak insight.

Pertanyaan: Diberikan DataFrame sesi pengguna, hitung durasi sesi rata-rata berdasarkan segmen pengguna, tidak termasuk sesi yang lebih pendek dari 10 detik.

python
# session_analysis.py
import pandas as pd

def analyze_sessions(df: pd.DataFrame) -> pd.DataFrame:
    """Calculate average session duration by user segment.
    
    Args:
        df: DataFrame with columns [user_id, segment, session_start, session_end]
    
    Returns:
        DataFrame with average duration per segment
    """
    # Calculate duration in seconds
    df['duration_seconds'] = (
        df['session_end'] - df['session_start']
    ).dt.total_seconds()
    
    # Filter short sessions and aggregate
    return (
        df[df['duration_seconds'] >= 10]
        .groupby('segment')
        .agg(
            avg_duration=('duration_seconds', 'mean'),
            session_count=('user_id', 'count')
        )
        .round(2)
        .reset_index()
    )

Jawaban ini mendemonstrasikan method chaining, penanganan datetime, dan fungsi agg dengan output bernama. Pewawancara memeriksa bahwa kandidat memfilter sebelum mengagregasi bukan setelahnya, yang akan memiringkan rata-rata.

Pertanyaan: Gabungkan dua DataFrame dan tangani nilai yang hilang dengan tepat.

python
# merge_and_clean.py
import pandas as pd
import numpy as np

def merge_user_data(
    users: pd.DataFrame,
    transactions: pd.DataFrame
) -> pd.DataFrame:
    """Merge user demographics with transaction history.
    
    Users without transactions get total_spent = 0.
    Transactions without user data are excluded.
    """
    merged = pd.merge(
        users,
        transactions.groupby('user_id')['amount'].sum().reset_index(),
        on='user_id',
        how='left'  # Keep all users, even without transactions
    )
    
    # Fill NaN for users with no transactions
    merged['amount'] = merged['amount'].fillna(0)
    merged.rename(columns={'amount': 'total_spent'}, inplace=True)
    
    return merged

Parameter how='left' dan penanganan fillna eksplisit menunjukkan perhatian terhadap edge cases. Kandidat yang menggunakan how='inner' kehilangan pengguna tanpa transaksi, yang mengubah populasi analisis.

Siap menguasai wawancara Data Analytics Anda?

Berlatih dengan simulator interaktif, flashcards, dan tes teknis kami.

Konsep Statistik: Apa yang Harus Dijelaskan Analyst dengan Jelas

Pertanyaan statistik menilai apakah kandidat dapat menerapkan konsep ke masalah bisnis nyata dan mengkomunikasikan temuan kepada stakeholder.

Pertanyaan: Seorang product manager mengklaim alur checkout baru meningkatkan konversi sebesar 5%. Tes berjalan selama satu minggu dengan 10.000 pengguna per varian. Apakah hasil ini signifikan secara statistik?

Jawaban lengkap membahas ukuran sampel, statistical power, dan practical significance:

  1. Hitung standard error: Untuk tingkat konversi, SE = sqrt(p(1-p)/n). Dengan konversi baseline 10% dan n=10.000, SE sekitar 0,003.

  2. Hitung z-score: Peningkatan relatif 5% berarti konversi baru adalah 10,5%. Perbedaan 0,5 poin persentase dibagi dengan pooled SE menentukan signifikansi.

  3. Pertimbangkan practical significance: Bahkan jika p < 0,05, peningkatan 0,5 poin persentase mungkin tidak membenarkan biaya engineering dari alur baru.

  4. Periksa confounds: Satu minggu menangkap pola akhir pekan vs hari kerja tetapi mungkin melewatkan siklus bulanan atau efek musiman.

Pewawancara menghargai kandidat yang mempertanyakan asumsi daripada menghitung p-value secara mekanis. Modul prinsip visualisasi data mencakup cara menyajikan temuan ini.

Pertanyaan: Jelaskan perbedaan antara korelasi dan kausalitas dengan contoh bisnis.

Penjualan es krim dan kematian akibat tenggelam berkorelasi positif. Keduanya meningkat di musim panas karena variabel confounding suhu. Merekomendasikan pengurangan produksi es krim untuk mencegah tenggelam adalah kesalahan mengartikan korelasi sebagai kausalitas.

Dalam analitik bisnis: pengeluaran iklan dan pendapatan sering berkorelasi, tetapi hubungan tersebut mungkin mencerminkan bahwa perusahaan meningkatkan pengeluaran iklan ketika proyeksi pendapatan sudah kuat, bukan bahwa iklan mendorong pendapatan. Menetapkan kausalitas memerlukan eksperimen terkontrol atau teknik inferensi kausal seperti difference-in-differences.

Pertanyaan Studi Kasus Bisnis: Menerjemahkan Masalah ke Query

Pertanyaan studi kasus menguji kemampuan untuk menguraikan masalah bisnis yang ambigu menjadi langkah-langkah analitis konkret.

Pertanyaan: Retensi pengguna turun 15% bulan lalu. Bagaimana cara menyelidikinya?

Pendekatan terstruktur:

  1. Validasi metrik: Konfirmasi definisi retensi cocok dengan perhitungan historis. Periksa masalah pipeline data atau perubahan tracking.

  2. Segmentasi penurunan: Pecah retensi berdasarkan kohort pengguna, saluran akuisisi, jenis perangkat, dan geografi. Penurunan 15% secara keseluruhan mungkin merupakan penurunan 50% di satu segmen yang menutupi stabilitas di tempat lain.

  3. Identifikasi timing: Apakah retensi turun secara bertahap atau tiba-tiba? Penurunan mendadak menunjukkan perubahan produk atau bug. Penurunan bertahap menunjuk ke faktor pasar atau kompetitif.

  4. Korelasikan dengan event: Sejajarkan timeline dengan rilis produk, kampanye pemasaran, peluncuran pesaing, dan event eksternal.

  5. Bentuk hipotesis: Berdasarkan pola segmentasi, usulkan penjelasan yang dapat diuji dan data yang diperlukan untuk mengkonfirmasi atau menolak masing-masing.

sql
-- retention_by_cohort.sql
WITH user_cohorts AS (
    SELECT
        user_id,
        DATE_TRUNC('week', created_at) AS cohort_week
    FROM users
),
weekly_activity AS (
    SELECT
        user_id,
        DATE_TRUNC('week', activity_date) AS activity_week
    FROM user_events
)
SELECT
    c.cohort_week,
    a.activity_week,
    COUNT(DISTINCT a.user_id) AS active_users,
    COUNT(DISTINCT c.user_id) AS cohort_size,
    ROUND(
        COUNT(DISTINCT a.user_id) * 100.0 / COUNT(DISTINCT c.user_id),
        1
    ) AS retention_pct
FROM user_cohorts c
LEFT JOIN weekly_activity a 
    ON c.user_id = a.user_id 
    AND a.activity_week >= c.cohort_week
GROUP BY c.cohort_week, a.activity_week
ORDER BY c.cohort_week, a.activity_week;

Query analisis kohort ini menghasilkan data yang diperlukan untuk langkah 2. Modul retensi kohort mencakup variasi dari pola ini.

Take-Home Assignments: Apa yang Dinilai Evaluator

Banyak perusahaan menyertakan take-home assignments yang berlangsung 2 hingga 4 jam. Evaluator menilai submission berdasarkan kualitas kode, ketelitian analitis, dan komunikasi.

Assignment umum: Diberikan dataset transaksi e-commerce, identifikasi faktor yang memprediksi churn pelanggan.

Submission yang kuat memiliki karakteristik berikut:

  • Analisis eksploratori terlebih dahulu: Statistik ringkasan, plot distribusi, dan penilaian nilai yang hilang sebelum pemodelan
  • Feature engineering: Membuat fitur relevan seperti recency, frequency, monetary value (RFM), dan indikator tren
  • Rasionale pemilihan model: Menjelaskan mengapa logistic regression atau random forest cocok untuk masalah, bukan hanya menjalankan default
  • Pendekatan validasi: Menggunakan split berbasis waktu daripada split acak untuk menghindari data leakage
  • Komunikasi yang jelas: Ringkasan eksekutif di atas, detail teknis di lampiran, visualisasi yang mendukung kesimpulan
python
# churn_analysis_structure.py
import pandas as pd
from sklearn.model_selection import TimeSeriesSplit
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import precision_recall_curve, auc

def create_rfm_features(df: pd.DataFrame, analysis_date: str) -> pd.DataFrame:
    """Create Recency, Frequency, Monetary features per customer."""
    analysis_dt = pd.to_datetime(analysis_date)
    
    rfm = df.groupby('customer_id').agg(
        recency=('order_date', lambda x: (analysis_dt - x.max()).days),
        frequency=('order_id', 'nunique'),
        monetary=('order_total', 'sum')
    ).reset_index()
    
    return rfm

def evaluate_with_time_split(
    X: pd.DataFrame, 
    y: pd.Series,
    n_splits: int = 5
) -> list:
    """Evaluate model using time-based cross-validation."""
    tscv = TimeSeriesSplit(n_splits=n_splits)
    scores = []
    
    for train_idx, val_idx in tscv.split(X):
        model = RandomForestClassifier(n_estimators=100, random_state=42)
        model.fit(X.iloc[train_idx], y.iloc[train_idx])
        
        y_pred_proba = model.predict_proba(X.iloc[val_idx])[:, 1]
        precision, recall, _ = precision_recall_curve(y.iloc[val_idx], y_pred_proba)
        scores.append(auc(recall, precision))
    
    return scores

Kode ini mendemonstrasikan feature engineering yang relevan dengan domain dan metodologi validasi yang tepat untuk data time-series.

Poin Penting untuk Wawancara Data Analyst di 2026

  • SQL window functions dengan PARTITION BY dan ORDER BY muncul di sebagian besar technical screens. Latih menghitung running totals, persentase, dan peringkat.

  • Pertanyaan Python pandas menekankan method chaining, agregasi groupby, dan operasi merge dengan penanganan nilai yang hilang yang tepat.

  • Pertanyaan statistik memerlukan penjelasan konsep dalam istilah bisnis. Pewawancara menilai kemampuan komunikasi, bukan hanya pengetahuan teknis.

  • Pertanyaan studi kasus bisnis menguji dekomposisi masalah terstruktur. Mulai dengan memvalidasi metrik, kemudian segmentasi untuk mengisolasi masalah.

  • Take-home assignments dinilai berdasarkan kualitas kode dan komunikasi sebanyak akurasi analitis. Sertakan ringkasan eksekutif dan jelaskan pilihan yang dibuat.

  • Modul BigQuery lanjutan dan modul dasar Python pandas menyediakan pertanyaan latihan tambahan yang selaras dengan pola wawancara saat ini.

Mulai berlatih!

Uji pengetahuan Anda dengan simulator wawancara dan tes teknis kami.

Tantangan harian

Bisakah kamu menemukan bug di Data Analytics?

Satu potongan kode nyata, satu bug tersembunyi, satu percobaan per hari. Tanpa akun untuk mencoba.

Anthony Fillion-Maillet

Ditulis oleh

Anthony Fillion-Maillet

Pendiri SharpSkill

Developer fullstack selama lebih dari 10 tahun. Ia menjalankan SharpSkill dan bertanggung jawab atas semua yang diterbitkan di sini.

Diperbarui 8 September 2026

Tag

#data-analyst
#sql
#python
#wawancara
#analytics

Bagikan

Artikel terkait