Lewati ke isi
anakdata.id
≡

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.

  1. 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.

  2. 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.

  3. 3Seperti tes kerjaBertimer, tanpa AI, dan hasilnya dicek

“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.

  1. 1Baru mulaiBelum pernah memakai pivot table

  2. 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.

  3. 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.

“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.

  1. 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.

  2. 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.

  3. 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.

“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.

  1. 1Baru mulaiBelum pernah membuat dashboard

  2. 2Latihan rutinSudah membuat satu dashboard

  3. 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

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. 1. Buka DuckDB Web Shell

    Database yang jalan di browser, tanpa akun dan tanpa install. Buka di shell.duckdb.org (membuka tab baru).

  2. 2. Paste SQL pembuat tabel

    Buka kotak di bawah, copy seluruh isinya, paste ke shell, lalu tekan Enter.

  3. 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
pelanggan · 7 baris
id_pelanggannamakota
1RinaBandung
2AgusJakarta
3SariSurabaya
4DimasJakarta
5WulanBandung
6BayuSurabaya
7FitriJakarta
pesanan · 12 baris
id_pesananid_pelangganwaktu_pesanongkirskor_ulasan
10112026-09-02 09:15:0012.0005
10222026-09-05 13:40:0015.0004
10312026-09-11 20:05:0012.000NULL
10432026-09-14 10:30:0018.0003
10542026-09-19 16:45:0015.0005
10622026-09-23 11:20:0015.000NULL
10752026-09-27 08:10:0012.0004
10862026-09-30 14:20:0018.0002
10942026-09-30 21:55:0015.000NULL
11032026-10-03 10:00:0018.0005
11112026-10-08 19:30:0012.0004
11222026-10-12 15:00:0015.000NULL
item_pesanan · 18 baris
id_pesananprodukkategorijumlahharga_satuan
101SapuKebersihan225.000
101EmberKebersihan130.000
102WajanDapur1120.000
103Sabun cuci piringKebersihan315.000
104WajanDapur1120.000
104SpatulaDapur220.000
104SapuKebersihan125.000
105Rak piringDapur1150.000
106Sabun cuci piringKebersihan415.000
107EmberKebersihan230.000
107SapuKebersihan325.000
108Rak piringDapur1150.000
108SpatulaDapur120.000
109Sabun cuci piringKebersihan215.000
109WajanDapur1120.000
110SpatulaDapur320.000
111Sabun cuci piringKebersihan215.000
112EmberKebersihan130.000
  1. 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
    kategoripenjualan
    Dapur720.000
    Kebersihan375.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
    kategoripenjualan
    Dapur430.000
    Kebersihan345.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.

  2. 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
    namajumlah_pesanan
    Agus3
    Rina3
    Dimas2
    Sari2

    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
    namajumlah_pesanan
    Rina4
    Sari4
    Agus3
    Dimas3
    Bayu2
    Wulan2

    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.

  3. 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
    kotatotal_ongkir
    Jakarta75.000
    Surabaya54.000
    Bandung48.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
    kotatotal_ongkir
    Surabaya108.000
    Jakarta90.000
    Bandung72.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.

  4. 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
    kotaprodukunit
    BandungSabun cuci piring5
    BandungSapu5
    JakartaSabun cuci piring6
    SurabayaSpatula6

    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
    kotaprodukunit
    BandungSapu5
    JakartaSabun cuci piring6
    SurabayaSpatula6

    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.

  5. 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
    pesanandiulasrata_rata_skor
    1284

    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.

  6. +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.