Transkrip Mock Interview SQL plus Rubrik Penilaiannya
Blog/Karir Data/Transkrip Mock Interview SQL plus Rubrik Penilaiannya

Transkrip Mock Interview SQL plus Rubrik Penilaiannya

BimaBima
·8 September 2025·10 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Mock interview SQL menilai lima hal: kebenaran query, cara mengklarifikasi soal, cara menjelaskan logika, penanganan kasus tepi seperti NULL dan duplikat, dan kesadaran performa. Kebanyakan kandidat gugur bukan karena querynya salah, tapi karena langsung ngetik tanpa nanya bentuk datanya dulu. Transkrip di artikel ini menunjukkan empat babak pertanyaan lengkap dengan skor per dimensi.

Mock interview SQL menilai lima hal sekaligus: kebenaran query, cara kamu mengklarifikasi soal, cara kamu menjelaskan logika, penanganan kasus tepi, dan kesadaran soal performa. Query yang benar tanpa penjelasan cuma dapat separuh nilai.

Dari 24 sesi latihan yang aku catat sepanjang 2025, 19 kandidat langsung ngetik tanpa nanya bentuk datanya dulu. Itu penyebab kehilangan poin nomor satu, jauh di atas salah sintaks.

Di bawah ini transkrip utuh satu sesi, empat babak, plus rubrik yang dipakai buat ngasih skor.

Apa yang dinilai pewawancara di mock interview SQL?

Pewawancara nilai proses, bukan cuma hasil akhir. Mereka pengen tau gimana kamu memecah soal yang kabur jadi query, apakah kamu sadar risiko duplikat dan NULL, dan apakah orang lain bisa ngerti query kamu tanpa penjelasan tambahan. Query yang jalan tapi nggak bisa dijelasin dianggap setengah selesai.

Sisi teknisnya biasanya nutup empat area: filter dan agregasi, JOIN, subquery atau CTE, dan window function.

Rubrik penilaian mock interview SQL

Rubrik ini yang aku pakai buat ngasih skor. Skala 1 sampai 4 per dimensi, jadi skor penuh 20.

DimensiSkor 1Skor 2Skor 3Skor 4
Kebenaran hasilQuery errorJalan tapi hasil salahHasil benarBenar plus tahan kasus tepi
Klarifikasi soalNggak nanya sama sekaliNanya setelah ditegurNanya 1 sampai 2 hal pentingNanya bentuk data, duplikat, dan definisi metrik
Penjelasan logikaDiam totalBaca ulang query keras-kerasJelasin alur per bagianJelasin alur plus alasan milih pendekatan
Kasus tepiNggak sadarSadar setelah dipancingSebut NULL atau duplikatSebut dan tangani di query
Kesadaran performaNggak dibahasSebut "mungkin lambat"Sebut indeks atau ukuran dataUsul perbaikan konkret

Patokan hasil: 16 ke atas siap interview beneran, 11 sampai 15 masih perlu latihan terarah, di bawah 11 sebaiknya balik dulu ke dasar JOIN dan GROUP BY.

Babak 1: pemanasan dan filter dasar

Skema yang dikasih ke kandidat: tabel pesanan berisi kolom id, pelanggan_id, tanggal, total, status. Tabel pelanggan berisi id, nama, kota, tanggal_daftar.

Pewawancara: Ambil total omzet per bulan sepanjang 2025.

Kandidat: Sebelum ngetik, kolom status isinya apa aja ya? Aku mau tau apakah pesanan batal ikut dihitung.

Pewawancara: Isinya selesai, batal, dan pending. Yang dihitung cuma selesai.

Kandidat: Oke, jadi filternya dua: status selesai, dan tahun 2025.

SELECT DATE_TRUNC('month', tanggal) AS bulan,
       SUM(total) AS omzet
FROM pesanan
WHERE status = 'selesai'
  AND tanggal >= DATE '2025-01-01'
  AND tanggal < DATE '2026-01-01'
GROUP BY 1
ORDER BY 1;

Catatan penilai: Nanya arti kolom status sebelum ngetik, dan pakai batas tanggal terbuka di sebelah kanan. Pemakaian tanggal < '2026-01-01' lebih aman dari BETWEEN kalau kolomnya bertipe timestamp. Skor kebenaran 4, klarifikasi 3.

Fungsi SUM di sini termasuk aggregate function, yang selalu jadi pembuka di hampir semua sesi.

Babak 2: JOIN dan agregasi

Pewawancara: Siapa 5 pelanggan dengan total belanja terbesar?

Kandidat: Ada kemungkinan nama pelanggan kembar nggak? Kalau iya aku grup pakai id, bukan nama.

Pewawancara: Bagus. Anggap ada dua orang bernama sama.

SELECT p.id,
       p.nama,
       SUM(o.total) AS total_belanja,
       COUNT(*) AS jumlah_pesanan
FROM pelanggan p
JOIN pesanan o ON o.pelanggan_id = p.id
WHERE o.status = 'selesai'
GROUP BY p.id, p.nama
ORDER BY total_belanja DESC
LIMIT 5;

Kandidat: Aku pakai INNER JOIN karena pelanggan tanpa pesanan nggak relevan buat peringkat belanja.

Catatan penilai: Grup pakai id itu tanda kandidat mikirin duplikat. Alasan milih INNER JOIN disebut tanpa diminta. Skor penjelasan 4.

Babak 3: window function

Pewawancara: Ambil 3 produk dengan omzet tertinggi di tiap kategori.

Kandidat: Ini pakai peringkat dalam kelompok, jadi window function. Aku pilih RANK dulu, tapi kalau kamu mau persis 3 baris walaupun ada nilai seri, ROW_NUMBER lebih cocok.

WITH omzet_produk AS (
    SELECT pr.kategori,
           pr.nama AS nama_produk,
           SUM(op.qty * op.harga) AS omzet
    FROM order_produk op
    JOIN produk pr ON pr.id = op.produk_id
    GROUP BY pr.kategori, pr.nama
),
peringkat AS (
    SELECT kategori,
           nama_produk,
           omzet,
           RANK() OVER (PARTITION BY kategori ORDER BY omzet DESC) AS r
    FROM omzet_produk
)
SELECT kategori, nama_produk, omzet
FROM peringkat
WHERE r <= 3
ORDER BY kategori, r;

Catatan penilai: Beda RANK dan ROW_NUMBER disebut sendiri, itu jarang. Pemakaian CTE bikin querynya kebaca dari atas ke bawah. Rincian perilaku tiap fungsi jendela ada di dokumentasi PostgreSQL.

Satu hal yang kelewat: window function nggak bisa dipakai langsung di WHERE, makanya butuh CTE atau subquery. Kandidat melakukannya dengan benar tapi nggak nyebut alasannya.

Babak 4: pertanyaan jebakan

Pewawancara: Cari pelanggan yang belum pernah pesan sama sekali.

Kandidat: Kalau pakai INNER JOIN hasilnya kosong, jadi harus LEFT JOIN terus saring baris yang pasangannya NULL.

SELECT p.id, p.nama
FROM pelanggan p
LEFT JOIN pesanan o ON o.pelanggan_id = p.id
WHERE o.id IS NULL;

Pewawancara: Kalau aku tulis WHERE o.id != 5 hasilnya sama nggak?

Kandidat: Nggak. Perbandingan sama NULL hasilnya bukan true, jadi barisnya kebuang. Buat NULL harus pakai IS NULL.

Catatan penilai: Ini jebakan yang paling sering kena. Dari 24 sesi, cuma 7 kandidat yang jawab benar di percobaan pertama.

Jebakan kedua yang sering muncul: beda COUNT(*) dan COUNT(kolom). Yang pertama ngitung semua baris, yang kedua ngelewatin baris dengan nilai NULL di kolom itu.

Skor akhir kandidat

DimensiSkorCatatan
Kebenaran hasil4Empat query jalan dan hasilnya benar
Klarifikasi soal3Nanya status dan nama kembar, lupa nanya rentang data
Penjelasan logika4Alasan milih JOIN dan RANK disebut sendiri
Kasus tepi4NULL dan duplikat ditangani di query
Kesadaran performa2Sempat bilang "mungkin berat", nggak lanjut ke indeks
Total17 / 20Siap masuk interview beneran

Skor rata-rata dari 24 sesi yang aku catat: 12,3 dari 20. Dimensi paling lemah selalu sama, yaitu kesadaran performa dengan rata-rata 1,8.

Kesalahan umum kandidat

  1. Ngetik sebelum nanya. Sepuluh detik buat nanya bentuk data nghemat dua menit revisi.
  2. Diam waktu mikir. Pewawancara nggak bisa nilai isi kepala kamu. Ucapkan rencananya walau belum yakin.
  3. Pakai SELECT bintang di jawaban akhir. Sebut kolomnya biar kelihatan kamu tau apa yang dibutuhin.
  4. Lupa filter status. Ngitung omzet termasuk pesanan batal itu kesalahan definisi metrik, dan itu dinilai lebih berat dari salah sintaks.
  5. Nggak ngecek hasil. Kalimat "aku mau cek dulu jumlah barisnya masuk akal atau nggak" nambah nilai.

FAQ

Mock interview SQL biasanya berapa lama?

Sesi teknis SQL umumnya 30 sampai 45 menit, dengan 3 sampai 5 soal yang naik tingkat. Kalau latihan sendiri, pasang timer 40 menit dan larang diri kamu buka dokumentasi.

Boleh nggak nanya balik ke pewawancara?

Bukan cuma boleh, tapi dinilai. Pertanyaan soal bentuk tabel, arti kolom status, dan kemungkinan duplikat menunjukkan kamu mikir sebelum ngetik.

Kalau lupa sintaks di tengah interview gimana?

Bilang apa adanya, terus tulis rencananya dalam bahasa biasa. Yang bikin nilai jeblok itu diam lama atau ngarang sintaks yang kamu sendiri nggak yakin.

Window function wajib dikuasai buat posisi entry level?

JOIN dan GROUP BY masih porsi terbesar, tapi ROW_NUMBER dan RANK muncul cukup sering di babak akhir. Kuasai tiga dulu: ROW_NUMBER, RANK, dan LAG.

Gimana latihan kalau nggak punya partner?

Rekam layar dan suara kamu sendiri sambil ngerjain soal, lalu tonton ulang pakai rubrik di artikel ini. Cara ini paling cepat nunjukkin kebiasaan buruk.

Penutup

Dua kebiasaan yang paling nambah skor: nanya bentuk data sebelum ngetik, dan ngomongin rencana sambil ngetik. Dua-duanya bisa dilatih tanpa nambah pengetahuan SQL sama sekali.

Cetak rubriknya, rekam sesi latihan kamu, lalu nilai sendiri minggu ini. Ulangi tiga minggu berturut-turut dan bandingin skornya.

Butuh bahan soalnya? Ambil dari Latihan SQL 30 Hari, isinya 30 soal bertingkat dengan pembahasan. Buat ngerapikan definisi angka yang dipakai di jawaban, cek juga glosarium KPI.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Kerja Data Analyst di Luar Negeri: Visa, Gaji, dan Persiapan
Karir Data
11 Juli 2026•9 menit baca

Kerja Data Analyst di Luar Negeri: Visa, Gaji, dan Persiapan

Kerja data analyst di luar negeri bukan soal ijazah luar negeri. Yang nentuin: sponsorship visa, portfolio, dan negara yang kamu incar.

BimaBima
Financial Analyst vs Data Analyst: Dua Dunia yang Makin Nyatu
Karir Data
8 Juli 2026•8 menit baca

Financial Analyst vs Data Analyst: Dua Dunia yang Makin Nyatu

Financial analyst kerja di angka uang, data analyst kerja di angka apa pun. Tapi di 2026 tools-nya makin sama. Ini beda dan irisannya.

BimaBima
Marketing Analyst: Metrik, Tools, dan Jalur Masuknya
Karir Data
5 Juli 2026•8 menit baca

Marketing Analyst: Metrik, Tools, dan Jalur Masuknya

Apa itu marketing analyst, metrik apa yang tiap hari dipegang, tools yang wajib bisa, dan jalur masuk yang paling realistis buat orang non-teknis di Indonesia.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore