Tempat latihan
Tempat latihan, menurut skill yang mau Anda latih
Membaca tutorial terasa lancar sampai Anda harus menulis query sendiri. Halaman ini mengumpulkan tempat untuk berlatih menulis, menghitung, dan mengecek hasil, dari yang paling ramah pemula sampai yang mirip tes kerja.
Pilih satu tempat per skill dan selesaikan dulu, sebelum membuka tempat berikutnya. Kami sengaja mengurutkannya supaya Anda tidak perlu membuka lima tab sekaligus.
- 40 tempat latihan
- 17 tanpa akun
- 7 berbahasa Indonesia
- Diperiksa 19 Oktober 2026
“Query saya jalan, tapi saya belum yakin hasilnya benar”
SQL
Di snapshot lowongan kami, SQL termasuk skill yang paling sering disebut lowongan Data Analyst. Latihannya punya dua tujuan: menulis query tanpa contekan, dan mengecek bahwa angkanya tidak dobel.
1Baru mulaiBelum pernah menulis SELECT
- SQLBolt (membuka tab baru)
Untuk query pertama Anda: tiap bab pendek langsung diikuti latihan di browser.
InggrisTanpa akun
Penjelasan dan latihannya ada di satu halaman yang sama.
- ThoughtSpot · SQL Tutorial (dulu Mode) (membuka tab baru)
Satu jalur runtut sampai analitik, dengan soal di tiap pelajaran.
InggrisTanpa akunAda yang berbayar
Dulu bernama Mode SQL Tutorial. Halamannya sendiri menyebut ramah pemula, dan tiap pelajaran punya soal latihan dengan editor SQL di halaman. Pemiliknya vendor BI; tombol Free trial di navigasinya untuk produk ThoughtSpot, tidak dibutuhkan untuk tutorialnya.
- SQLBolt (membuka tab baru)
2Sudah bisa dasarSELECT, WHERE, GROUP BY sudah jalan
- PG Exercises (membuka tab baru)
Soal per topik, dari JOIN sampai tanggal, dengan jawaban yang bisa dicocokkan.
InggrisTanpa akun
Soalnya memakai dialek PostgreSQL.
- The SQL Murder Mystery (membuka tab baru)
Satu kasus utuh di database yang belum pernah Anda lihat. Melatih membaca skema.
InggrisTanpa akun
Buatan Knight Lab, Northwestern University. Query dijalankan langsung di peramban, dan ada panduan untuk yang baru mengenal SQL.
- 8 Week SQL Challenge (membuka tab baru)
Studi kasus bisnis lengkap, untuk latihan sesudah JOIN terasa lancar.
InggrisTanpa akunAda yang berbayar
Delapan studi kasus lengkap dengan skema dan pertanyaannya. Solusi resminya ada di kursus berbayar dari pembuat yang sama. Kasus terakhirnya terbit 2021.
- PG Exercises (membuka tab baru)
3Seperti tes kerjaBertimer, tanpa AI, dan hasilnya dicek
- Lima soal di halaman ini
Data kecil, jawaban, dan jebakan yang membuat hasil salah tanpa error.
- HackerRank · SQL (Basic) Certification Test (membuka tab baru)
Tes bertimer yang timernya tidak bisa dijeda. Paling mirip suasana tes sungguhan.
InggrisPerlu akun
Halaman tesnya menulis dua soal dengan timer. Paling mirip suasana technical test di antara semua tempat di daftar ini.
- DataLemur · SQL Interview Questions (membuka tab baru)
Soal bergaya interview, dengan label tingkat kesulitan.
InggrisCek syarat daftarnyaAda yang berbayar
Sebagian soal bisa dibuka tanpa akun, sebagian hanya untuk paket Premium. Ada juga soal Python dan statistik.
- Lima soal di halaman ini
“Excel saya cuma sampai SUM dan filter”
Spreadsheet
Spreadsheet masuk skill yang paling sering disebut lowongan Data Analyst di snapshot kami. Latihan di bawah menyiapkan Anda untuk lookup dan pivot table pada data yang masih berantakan.
1Baru mulaiBelum pernah memakai pivot table
- LearnFree · Excel Foundations (dulu GCFGlobal) (membuka tab baru)
Tutorial bertahap dari nol, bisa dipelajari tanpa akun.
InggrisTanpa akun
Dulu bernama GCFGlobal; link lamanya sekarang dialihkan ke sini. Bisa dipelajari tanpa akun, dan akun gratisnya cuma untuk menyimpan kemajuan.
- LearnFree · Google Sheets (membuka tab baru)
Seri yang sama, kalau Anda memakai Google Sheets.
InggrisTanpa akun
Seri yang sama dari LearnFree, dulu GCFGlobal. Beberapa pelajaran pertamanya soal Google Drive.
- Excel for the web (membuka tab baru)
Kalau di laptop tidak ada Excel. Pivot table jalan di versi browser.
InggrisPerlu akun
Gratis dengan akun Microsoft, termasuk 5 GB OneDrive. Sebagian fitur Excel desktop bekerja berbeda di versi browser.
- LearnFree · Excel Foundations (dulu GCFGlobal) (membuka tab baru)
2Sudah bisa dasarLookup dan pivot table sudah pernah dicoba
- Excel Practice Online (membuka tab baru)
Soal per fungsi yang dikerjakan langsung di halaman, dengan jawabannya.
InggrisTanpa akun
Tiap fungsi punya penjelasan dan latihan, dengan jawaban di tab Answer. Urutannya dari pemula sampai lanjut.
- Contextures · Excel Sample Data (membuka tab baru)
Data penjualan contoh untuk berlatih pivot table dan lookup sendiri.
InggrisTanpa akun
Data fiktif. Bisa di-download atau di-copy dari tabel di halamannya, dan ada set data lain yang ditautkan.
- ExcelJet (membuka tab baru)
Rujukan rumus dengan contoh pendek, untuk dibuka saat buntu.
InggrisTanpa akunAda yang berbayar
Rujukan rumusnya gratis; video training-nya berbayar.
- Excel Practice Online (membuka tab baru)
3Seperti tes kerjaRaw data jadi report, dengan timer
- UCI Online Retail II (membuka tab baru)
Lebih dari sejuta baris transaksi toko online. Ambil 10.000 baris pertama, lalu ubah jadi report bulanan per negara dalam 30 menit.
InggrisTanpa akun
Toko di Inggris, transaksi 2009 sampai 2011.
- UCI Online Retail II (membuka tab baru)
“Saya bisa mengikuti tutorial, tapi blank kalau menulis sendiri”
Python dan pandas
Di snapshot lowongan kami, Python lebih jarang disebut lowongan Data Analyst dibanding SQL dan spreadsheet. Python jadi fondasi kalau Anda mengincar Data Scientist atau Data Engineer. Library pandas dipakai untuk mengolah tabel. Banyak latihan di bawah berbentuk notebook: file berisi kode dan hasilnya, yang bisa dibuka di Google Colab tanpa install.
1Baru mulaiBelum pernah menulis Python
- Exercism · Python (membuka tab baru)
Latihan pendek dengan tes otomatis dan mentor sukarela.
InggrisPerlu akun
Tiap latihan dicek tes otomatis, dan ada mentor sukarela. Ada program donasi, tapi latihannya tidak berbayar.
- Exercism · Python (membuka tab baru)
2Sudah bisa dasarPaham list, loop, dan fungsi
- Kaggle Learn (membuka tab baru)
Kursus pandas singkat dengan latihan notebook.
InggrisPerlu akun
- Harvard CS50P (membuka tab baru)
Kursus Python yang lengkap dan panjang, dengan soal yang dinilai otomatis.
InggrisPerlu akun
Kursusnya panjang, jadi kurang cocok sebagai langkah pertama yang ringan. Materinya terbuka tanpa akun; untuk mengumpulkan soal dan mendapat penilaian perlu akun edX.
- Kaggle Learn (membuka tab baru)
3Menguji diriSudah memakai pandas di project kecil
- pandas exercises (membuka tab baru)
Notebook soal per topik, dari filter sampai merge.
InggrisTanpa akun
Repo GitHub berisi notebook soal per topik, dengan file jawaban terpisah. Bisa dibuka di Google Colab.
- 100 pandas puzzles (membuka tab baru)
Soal pendek dari mudah sampai sulit, dengan notebook jawaban.
InggrisTanpa akun
Satu notebook soal dan satu notebook jawaban. Judulnya 100, tapi repo-nya menulis baru sekitar 60% soal yang selesai.
- Python Data Science Handbook (membuka tab baru)
Rujukan yang bisa dijalankan bab demi bab di Google Colab.
InggrisTanpa akunAda yang berbayar
Versi cetaknya dijual penerbit. Teks lengkap dan notebook-nya terbuka di web dan bisa dijalankan di Google Colab.
- pandas exercises (membuka tab baru)
“Dashboard saya ramai, tapi tidak menjawab apa-apa”
BI dan dashboard
Kalau lowongan incaran Anda menulis beberapa BI tool, cukup lancar di satu dulu. Pilih Power BI kalau laptop Anda Windows, atau Data Studio kalau mau jalan di browser.
1Baru mulaiBelum pernah membuat dashboard
- Microsoft Learn · Power BI (membuka tab baru)
Learning path resmi Power BI, gratis.
InggrisTanpa akun
- Data Studio (sebelumnya Looker Studio) (membuka tab baru)
Dashboard di peramban dengan akun Google, cocok kalau laptop Anda bukan Windows.
InggrisPerlu akunAda yang berbayar
Gratis dengan akun Google. Pakai sumber Google Sheets atau upload CSV. Konektor BigQuery meminta project yang terhubung ke billing account Google Cloud.
- Microsoft Learn · Power BI (membuka tab baru)
2Latihan rutinSudah membuat satu dashboard
- Makeover Monday (membuka tab baru)
Satu dataset baru tiap Senin. Cocok untuk latihan mingguan yang ringan.
InggrisTanpa akun
Halamannya menulis gratis. Alamatnya pindah dari makeovermonday.co.uk.
- Workout Wednesday · Power BI (membuka tab baru)
Tiap Rabu membuat ulang satu visual di Power BI. Ada yang berlabel Beginner.
InggrisTanpa akun
Sebagian tantangannya berlabel Beginner, sebagian Intermediate.
- Storytelling with Data · tantangan bulanan (membuka tab baru)
Tema bulanan tentang cara bercerita dengan grafik.
InggrisPerlu akunAda yang berbayar
Keanggotaan komunitasnya gratis. Ada keanggotaan premium untuk video dan event, yang tidak dibutuhkan untuk ikut tantangan.
- Makeover Monday (membuka tab baru)
3Pamerkan hasilnyaPunya dua atau tiga dashboard yang selesai
- Tableau Public · Learn (membuka tab baru)
Kalau Anda memakai Tableau, simpan dashboard di profil publik yang bisa ditautkan dari CV. Kalau memakai Power BI atau Data Studio, taruh screenshot dan penjelasannya di README project Anda.
InggrisPerlu akun
- Tableau Public · Learn (membuka tab baru)
Kerjakan di sini
Lima soal SQL ala technical test
Kami memilih pola soal yang memakai skill dasar: filter tanggal, GROUP BY, JOIN, dan window function. Tiap soal punya satu jebakan: kueri yang jalan tanpa error, tapi hasilnya salah. Datanya rekaan dan sengaja kecil, supaya Anda bisa mengecek jawabannya dengan tangan.
1. Buka DuckDB Web Shell
Database yang jalan di browser, tanpa akun dan tanpa install. Buka di shell.duckdb.org (membuka tab baru).
2. Paste SQL pembuat tabel
Buka kotak di bawah, copy seluruh isinya, paste ke shell, lalu tekan Enter.
3. Kerjakan tanpa AI
Tulis query Anda sendiri dulu. Buka jawaban sesudah hasil Anda keluar.
SQL pembuat tabel, untuk di-copy
CREATE TABLE pelanggan (
id_pelanggan INTEGER,
nama VARCHAR,
kota VARCHAR
);
CREATE TABLE pesanan (
id_pesanan INTEGER,
id_pelanggan INTEGER,
waktu_pesan TIMESTAMP,
ongkir INTEGER,
skor_ulasan INTEGER
);
CREATE TABLE item_pesanan (
id_pesanan INTEGER,
produk VARCHAR,
kategori VARCHAR,
jumlah INTEGER,
harga_satuan INTEGER
);
INSERT INTO pelanggan VALUES
(1, 'Rina', 'Bandung'),
(2, 'Agus', 'Jakarta'),
(3, 'Sari', 'Surabaya'),
(4, 'Dimas', 'Jakarta'),
(5, 'Wulan', 'Bandung'),
(6, 'Bayu', 'Surabaya'),
(7, 'Fitri', 'Jakarta');
INSERT INTO pesanan VALUES
(101, 1, '2026-09-02 09:15:00', 12000, 5),
(102, 2, '2026-09-05 13:40:00', 15000, 4),
(103, 1, '2026-09-11 20:05:00', 12000, NULL),
(104, 3, '2026-09-14 10:30:00', 18000, 3),
(105, 4, '2026-09-19 16:45:00', 15000, 5),
(106, 2, '2026-09-23 11:20:00', 15000, NULL),
(107, 5, '2026-09-27 08:10:00', 12000, 4),
(108, 6, '2026-09-30 14:20:00', 18000, 2),
(109, 4, '2026-09-30 21:55:00', 15000, NULL),
(110, 3, '2026-10-03 10:00:00', 18000, 5),
(111, 1, '2026-10-08 19:30:00', 12000, 4),
(112, 2, '2026-10-12 15:00:00', 15000, NULL);
INSERT INTO item_pesanan VALUES
(101, 'Sapu', 'Kebersihan', 2, 25000),
(101, 'Ember', 'Kebersihan', 1, 30000),
(102, 'Wajan', 'Dapur', 1, 120000),
(103, 'Sabun cuci piring', 'Kebersihan', 3, 15000),
(104, 'Wajan', 'Dapur', 1, 120000),
(104, 'Spatula', 'Dapur', 2, 20000),
(104, 'Sapu', 'Kebersihan', 1, 25000),
(105, 'Rak piring', 'Dapur', 1, 150000),
(106, 'Sabun cuci piring', 'Kebersihan', 4, 15000),
(107, 'Ember', 'Kebersihan', 2, 30000),
(107, 'Sapu', 'Kebersihan', 3, 25000),
(108, 'Rak piring', 'Dapur', 1, 150000),
(108, 'Spatula', 'Dapur', 1, 20000),
(109, 'Sabun cuci piring', 'Kebersihan', 2, 15000),
(109, 'Wajan', 'Dapur', 1, 120000),
(110, 'Spatula', 'Dapur', 3, 20000),
(111, 'Sabun cuci piring', 'Kebersihan', 2, 15000),
(112, 'Ember', 'Kebersihan', 1, 30000);Query-nya hanya memakai SQL standar, jadi semestinya juga jalan di PostgreSQL.
Isi tiga tabelnya
| id_pelanggan | nama | kota |
|---|---|---|
| 1 | Rina | Bandung |
| 2 | Agus | Jakarta |
| 3 | Sari | Surabaya |
| 4 | Dimas | Jakarta |
| 5 | Wulan | Bandung |
| 6 | Bayu | Surabaya |
| 7 | Fitri | Jakarta |
| id_pesanan | id_pelanggan | waktu_pesan | ongkir | skor_ulasan |
|---|---|---|---|---|
| 101 | 1 | 2026-09-02 09:15:00 | 12.000 | 5 |
| 102 | 2 | 2026-09-05 13:40:00 | 15.000 | 4 |
| 103 | 1 | 2026-09-11 20:05:00 | 12.000 | NULL |
| 104 | 3 | 2026-09-14 10:30:00 | 18.000 | 3 |
| 105 | 4 | 2026-09-19 16:45:00 | 15.000 | 5 |
| 106 | 2 | 2026-09-23 11:20:00 | 15.000 | NULL |
| 107 | 5 | 2026-09-27 08:10:00 | 12.000 | 4 |
| 108 | 6 | 2026-09-30 14:20:00 | 18.000 | 2 |
| 109 | 4 | 2026-09-30 21:55:00 | 15.000 | NULL |
| 110 | 3 | 2026-10-03 10:00:00 | 18.000 | 5 |
| 111 | 1 | 2026-10-08 19:30:00 | 12.000 | 4 |
| 112 | 2 | 2026-10-12 15:00:00 | 15.000 | NULL |
| id_pesanan | produk | kategori | jumlah | harga_satuan |
|---|---|---|---|---|
| 101 | Sapu | Kebersihan | 2 | 25.000 |
| 101 | Ember | Kebersihan | 1 | 30.000 |
| 102 | Wajan | Dapur | 1 | 120.000 |
| 103 | Sabun cuci piring | Kebersihan | 3 | 15.000 |
| 104 | Wajan | Dapur | 1 | 120.000 |
| 104 | Spatula | Dapur | 2 | 20.000 |
| 104 | Sapu | Kebersihan | 1 | 25.000 |
| 105 | Rak piring | Dapur | 1 | 150.000 |
| 106 | Sabun cuci piring | Kebersihan | 4 | 15.000 |
| 107 | Ember | Kebersihan | 2 | 30.000 |
| 107 | Sapu | Kebersihan | 3 | 25.000 |
| 108 | Rak piring | Dapur | 1 | 150.000 |
| 108 | Spatula | Dapur | 1 | 20.000 |
| 109 | Sabun cuci piring | Kebersihan | 2 | 15.000 |
| 109 | Wajan | Dapur | 1 | 120.000 |
| 110 | Spatula | Dapur | 3 | 20.000 |
| 111 | Sabun cuci piring | Kebersihan | 2 | 15.000 |
| 112 | Ember | Kebersihan | 1 | 30.000 |
- 1GROUP BY dan filter tanggal
Total penjualan per kategori di September 2026
Berapa total penjualan tiap kategori produk selama September 2026? Penjualan dihitung dari jumlah dikali harga satuan.
Lihat jawaban dan jebakannya
Jawaban
SELECT i.kategori, SUM(i.jumlah * i.harga_satuan) AS penjualan FROM pesanan p JOIN item_pesanan i ON i.id_pesanan = p.id_pesanan WHERE p.waktu_pesan >= '2026-09-01' AND p.waktu_pesan < '2026-10-01' GROUP BY i.kategori ORDER BY penjualan DESC;Hasilnya kategori penjualan Dapur 720.000 Kebersihan 375.000 Jebakan: BETWEEN dengan tanggal tanpa jam
SELECT i.kategori, SUM(i.jumlah * i.harga_satuan) AS penjualan FROM pesanan p JOIN item_pesanan i ON i.id_pesanan = p.id_pesanan WHERE p.waktu_pesan BETWEEN '2026-09-01' AND '2026-09-30' GROUP BY i.kategori ORDER BY penjualan DESC;Hasil query yang keliru kategori penjualan Dapur 430.000 Kebersihan 345.000 Kolom waktu_pesan menyimpan jam. Tanggal '2026-09-30' dibaca sebagai 30 September pukul 00.00, jadi dua pesanan yang masuk siang dan malam hari itu tidak ikut terhitung. Total kedua kategori jadi Rp775.000, padahal seharusnya Rp1.095.000. Query-nya tetap jalan tanpa pesan error.
Cara mengeceknya di pekerjaan
Tulis batas bawah dengan >= dan batas atas dengan < tanggal 1 bulan berikutnya. Lalu cocokkan jumlah pesanan hasil filter Anda dengan hitungan pesanan bulan itu dari tabel pesanan saja.
- 2GROUP BY dan HAVING
Pelanggan yang belanja dua kali atau lebih
Siapa saja pelanggan yang membuat dua pesanan atau lebih, dan berapa pesanannya masing-masing?
Lihat jawaban dan jebakannya
Jawaban
SELECT pl.nama, COUNT(*) AS jumlah_pesanan FROM pesanan p JOIN pelanggan pl ON pl.id_pelanggan = p.id_pelanggan GROUP BY pl.id_pelanggan, pl.nama HAVING COUNT(*) >= 2 ORDER BY jumlah_pesanan DESC, pl.nama;Hasilnya nama jumlah_pesanan Agus 3 Rina 3 Dimas 2 Sari 2 Jebakan: COUNT(*) sesudah JOIN ke item
SELECT pl.nama, COUNT(*) AS jumlah_pesanan FROM pesanan p JOIN pelanggan pl ON pl.id_pelanggan = p.id_pelanggan JOIN item_pesanan i ON i.id_pesanan = p.id_pesanan GROUP BY pl.id_pelanggan, pl.nama HAVING COUNT(*) >= 2 ORDER BY jumlah_pesanan DESC, pl.nama;Hasil query yang keliru nama jumlah_pesanan Rina 4 Sari 4 Agus 3 Dimas 3 Bayu 2 Wulan 2 Sesudah JOIN ke item_pesanan, satu baris berarti satu item, bukan satu pesanan. Bayu dan Wulan cuma punya satu pesanan, tapi pesanannya berisi dua item, jadi ikut lolos HAVING. Hasilnya enam nama, padahal yang benar empat.
Cara mengeceknya di pekerjaan
Kalau tabel item memang perlu di-JOIN, hitung dengan COUNT(DISTINCT p.id_pesanan). Lalu cek satu nama dengan tangan: buka pesanannya di tabel pesanan dan hitung barisnya.
- 3JOIN dua tabel
Total ongkir per kota
Berapa total ongkos kirim yang dibayar pelanggan di tiap kota, untuk seluruh pesanan?
Lihat jawaban dan jebakannya
Jawaban
SELECT pl.kota, SUM(p.ongkir) AS total_ongkir FROM pesanan p JOIN pelanggan pl ON pl.id_pelanggan = p.id_pelanggan GROUP BY pl.kota ORDER BY total_ongkir DESC;Hasilnya kota total_ongkir Jakarta 75.000 Surabaya 54.000 Bandung 48.000 Jebakan: Fan-out: satu pesanan jadi beberapa baris
SELECT pl.kota, SUM(p.ongkir) AS total_ongkir FROM pesanan p JOIN pelanggan pl ON pl.id_pelanggan = p.id_pelanggan JOIN item_pesanan i ON i.id_pesanan = p.id_pesanan GROUP BY pl.kota ORDER BY total_ongkir DESC;Hasil query yang keliru kota total_ongkir Surabaya 108.000 Jakarta 90.000 Bandung 72.000 Ongkir dicatat sekali per pesanan, sedangkan item bisa lebih dari satu per pesanan. Begitu item_pesanan ikut di-JOIN, ongkir satu pesanan tertulis ulang di tiap baris item, lalu ikut dijumlah. Total ongkir seluruh kota jadi Rp270.000, padahal yang dibayar pelanggan Rp177.000. Ini yang disebut fan-out.
Cara mengeceknya di pekerjaan
Jumlahkan ongkir dari tabel pesanan saja, tanpa JOIN apa pun, lalu bandingkan dengan total hasil query Anda. Kalau hasil query lebih besar, ada baris yang tergandakan.
- 4Window function
Produk paling laku di tiap kota
Produk apa yang terjual paling banyak, dalam unit, di tiap kota?
Lihat jawaban dan jebakannya
Jawaban
WITH unit AS ( SELECT pl.kota, i.produk, SUM(i.jumlah) AS unit FROM pesanan p JOIN pelanggan pl ON pl.id_pelanggan = p.id_pelanggan JOIN item_pesanan i ON i.id_pesanan = p.id_pesanan GROUP BY pl.kota, i.produk ), urut AS ( SELECT *, RANK() OVER ( PARTITION BY kota ORDER BY unit DESC ) AS peringkat FROM unit ) SELECT kota, produk, unit FROM urut WHERE peringkat = 1 ORDER BY kota, produk;Hasilnya kota produk unit Bandung Sabun cuci piring 5 Bandung Sapu 5 Jakarta Sabun cuci piring 6 Surabaya Spatula 6 Jebakan: ROW_NUMBER saat ada nilai yang sama
WITH unit AS ( SELECT pl.kota, i.produk, SUM(i.jumlah) AS unit FROM pesanan p JOIN pelanggan pl ON pl.id_pelanggan = p.id_pelanggan JOIN item_pesanan i ON i.id_pesanan = p.id_pesanan GROUP BY pl.kota, i.produk ), urut AS ( SELECT *, ROW_NUMBER() OVER ( PARTITION BY kota ORDER BY unit DESC ) AS peringkat FROM unit ) SELECT kota, produk, unit FROM urut WHERE peringkat = 1 ORDER BY kota, produk;Hasil query yang keliru kota produk unit Bandung Sapu 5 Jakarta Sabun cuci piring 6 Surabaya Spatula 6 Di Bandung, Sabun cuci piring dan Sapu sama-sama terjual 5 unit. ROW_NUMBER selalu memberi nomor berbeda, jadi cuma satu dari keduanya yang mendapat nomor 1. Produk yang terpilih bisa berbeda tiap kali query dijalankan, karena urutannya tidak ditentukan. RANK memberi nomor yang sama untuk nilai yang sama, jadi keduanya muncul.
Cara mengeceknya di pekerjaan
Sebelum memilih peringkat teratas, lihat dulu apakah nilai di peringkat 1 dan 2 ada yang sama. Kalau soalnya minta tepat satu produk, tanyakan aturan pemecah serinya, misalnya nilai penjualan.
- 5Fungsi agregat dan NULL
Rata-rata skor ulasan
Berapa rata-rata skor ulasan pelanggan? Sebutkan juga dari berapa pesanan rata-rata itu dihitung.
Lihat jawaban dan jebakannya
Jawaban
SELECT COUNT(*) AS pesanan, COUNT(skor_ulasan) AS diulas, ROUND(AVG(skor_ulasan), 2) AS rata_rata_skor FROM pesanan;Hasilnya pesanan diulas rata_rata_skor 12 8 4 Jebakan: Membagi dengan semua pesanan
SELECT ROUND(SUM(skor_ulasan) * 1.0 / COUNT(*), 2) AS rata_rata_skor FROM pesanan;Hasil query yang keliru rata_rata_skor 2,67 Dari dua belas pesanan, cuma delapan yang diberi ulasan. Sisanya NULL. AVG dan COUNT(skor_ulasan) melewati NULL, jadi rata-ratanya 4,00 dari delapan pesanan. Kalau jumlah skor dibagi COUNT(*), hasilnya 2,67. Itu sama saja dengan menganggap pesanan tanpa ulasan bernilai nol.
Cara mengeceknya di pekerjaan
Tiap kali melaporkan rata-rata dari kolom yang bisa kosong, tulis juga jumlah baris yang benar-benar dihitung. Rata-rata dari delapan ulasan dan dari delapan ratus ulasan tidak sama kuatnya.
- +Tanpa SQL
Persen dan poin persen
Porsi pelanggan yang belanja lagi naik dari 10% ke 12%. Naiknya berapa?
Lihat jawaban dan jebakannya
Naik 2 poin persen, atau naik 20% dibanding angka awalnya. Keduanya benar, tapi artinya berbeda.
Kalimat "naik 2%" ambigu: pembaca bisa mengira porsinya naik dari 10% ke 10,2%. Di report, tulis "naik 2 poin persen" atau "naik 20%", sesuai yang Anda maksud.
Kompetisi
Kompetisi memberi soal, data, dan deadline yang bukan buatan Anda sendiri. Kompetisi Indonesia di sini kebanyakan untuk mahasiswa dan dibuka setahun sekali. Kompetisi global terbuka untuk umum, dengan batas usia minimal 18 tahun di Kaggle dan DrivenData.
- Kaggle · Playground Series (membuka tab baru)
Kompetisi pertama Anda: ada episode baru tiap bulan dengan data yang ringan
InggrisPerlu akun
Link ini menuju episode Oktober 2026. Episode berikutnya muncul di halaman kompetisi Kaggle tiap awal bulan. Peserta kompetisi Kaggle minimal berusia 18 tahun.
- DrivenData · practice competitions (membuka tab baru)
Latihan kompetisi tanpa tekanan deadline, dengan kasus sosial
InggrisPerlu akun
Practice competition terbuka sepanjang tahun, dua di antaranya berlabel beginner. Ada juga kompetisi berhadiah.
- Zindi (membuka tab baru)
Kompetisi dengan kasus dari negara berkembang, kalau Kaggle terasa terlalu ramai
InggrisPerlu akun
Halaman pendaftarannya menulis gratis. Dulu beralamat zindi.africa.
- Satria Data (Kemdiktisaintek) (membuka tab baru)
Kalau Anda mahasiswa: kompetisi statistika dan big data tingkat nasional, tiap tahun
IndonesiaCek syarat daftarnya
Empat cabang: kompetisi statistika perorangan, esai, infografik, dan Big Data Challenge untuk tim tiga orang. Jadwal dan syaratnya ada di panduan edisi terbaru.
- GEMASTIK · cabang Penambangan Data (membuka tab baru)
Kalau Anda mahasiswa: lomba nasional yang penyisihannya berupa technical report
IndonesiaPerlu akun
Panduan 2026 menulis tanpa biaya pendaftaran. Biaya akomodasi dan perjalanan ke final jadi tanggung jawab perguruan tinggi masing-masing, dan jumlah tim per kampus dibatasi. Pendaftarannya lewat akun perguruan tinggi.
- Datavidia (Arkavidia, HMIF ITB) (membuka tab baru)
Kalau Anda mahasiswa: kompetisi data science untuk tim tiga orang dari kampus yang sama
IndonesiaCek syarat daftarnyaAda biaya
Ada biaya pendaftaran per tim, dan finalnya tatap muka di ITB.
- COMPFEST · Data Analytics Dash (Fasilkom UI) (membuka tab baru)
Kalau Anda mahasiswa dan ingin lomba yang paling mirip kerja Data Analyst
IndonesiaCek syarat daftarnyaAda biaya
Menurut guidebook-nya, penyisihan berupa soal SQL dan final berupa dashboard dan presentasi. Gratis di gelombang pendaftaran pertama, berbayar sesudahnya.
- Gammafest · Data Science Competition (IPB) (membuka tab baru)
Kompetisi data science yang FAQ-nya menyebut terbuka untuk pemula
IndonesiaCek syarat daftarnyaAda biayaRamah pemula
Ada biaya pendaftaran per tim. Pengumpulan jawabannya lewat Kaggle. Edisi 2026 sudah selesai; pantau halamannya untuk edisi berikutnya.
- PIDI DIGDAYA x Hackathon (Bank Indonesia dan OJK) (membuka tab baru)
Kalau Anda ingin mengerjakan masalah keuangan digital, dari proposal sampai prototype
IndonesiaPerlu akun
Hackathon inovasi, bukan kompetisi data murni. Sebagian problem statement-nya berbasis data, misalnya credit scoring dan pemantauan inflasi.
Project relawan
Project untuk organisasi sungguhan, dengan data yang belum dibersihkan siapa pun. Sebagian menyasar orang yang skill datanya sudah jalan, jadi baca syarat tiap tempat.
- Statistics Without Borders (membuka tab baru)
Project statistik sukarela untuk organisasi nirlaba, dari jarak jauh
InggrisPerlu akun
Formulir relawannya tertulis $0. FAQ-nya menyebut relawan dari mahasiswa sampai pensiunan, termasuk yang belum berpengalaman. Pendaftarannya wajib diulang tiap tahun.
- DataKind (membuka tab baru)
Kalau skill data Anda sudah jalan dan ingin project untuk organisasi sosial
InggrisPerlu akun
Relawan boleh dari mana saja. Panggilan project diumumkan lewat newsletter, dan halamannya menyasar orang yang sudah bekerja dengan data.
- UN Online Volunteering (membuka tab baru)
Relawan online untuk organisasi PBB dan mitranya
InggrisPerlu akun
Relawan online tidak menerima tunjangan apa pun. Saring dulu peluang yang berkaitan dengan data.
- Wikimedia Indonesia · sukarelawan Wikidata (membuka tab baru)
Latihan menyusun data terstruktur bersama komunitas di Indonesia
IndonesiaCek syarat daftarnya
Kerjanya kurasi data di Wikidata, bukan analisis. Halamannya menulis Anda tidak harus ahli untuk mulai.
- HOT Tasking Manager (membuka tab baru)
Membuat data peta untuk respons kemanusiaan, kalau Anda tertarik ke data geospasial
InggrisPerlu akun
Kerjanya menggambar bangunan dan jalan di OpenStreetMap, bukan analisis data. Proyeknya diberi label tingkat kesulitan.
Butuh data untuk project portfolio? Lihat dataset berlisensi jelas, portal data terbuka, dan brief project dari data Indonesia.
Kami mengecek seluruh link di halaman ini pada 19 Oktober 2026.