Minigame SQL
Latihan menulis kueri di basis data SQLite kecil (via WebAssembly, paket sql.js) yang berjalan sepenuhnya di perambanmu. Data latihannya fiktif, tidak dikirim ke server, dan tidak terhubung ke poin acara.
Skema basis data latihan
Tiga tabel ini dipakai oleh semua tantangan di bawah. Database dibuat ulang setiap kali kueri dijalankan, jadi aman untuk bereksperimen.
Lihat skema & contoh data
CREATE TABLE peserta ( id INTEGER PRIMARY KEY, nama TEXT NOT NULL, kelompok TEXT NOT NULL, poin INTEGER NOT NULL ); INSERT INTO peserta (id, nama, kelompok, poin) VALUES (1, 'Ani', 'Garuda', 28), (2, 'Budi', 'Garuda', 17), (3, 'Citra', 'Elang', 31), (4, 'Dewi', 'Elang', 22), (5, 'Eko', 'Merak', 9), (6, 'Fani', 'Merak', 25), (7, 'Gilang', 'Garuda', 12), (8, 'Hina', 'Elang', 27); CREATE TABLE misi ( id INTEGER PRIMARY KEY, judul TEXT NOT NULL, level INTEGER NOT NULL, poin INTEGER NOT NULL ); INSERT INTO misi (id, judul, level, poin) VALUES (1, 'Susun Algoritma', 1, 2), (2, 'Pasang IDE', 2, 2), (3, 'Error Hunt', 3, 3), (4, 'Trivia Kilat', 3, 3); CREATE TABLE penyelesaian ( peserta_id INTEGER NOT NULL, misi_id INTEGER NOT NULL ); INSERT INTO penyelesaian (peserta_id, misi_id) VALUES (1, 1), (1, 2), (2, 1), (3, 1), (3, 3), (4, 2), (6, 1), (8, 3), (8, 4);
Kenalan dengan tabel
Tampilkan seluruh isi tabel peserta (semua kolom).
Petunjuk
Gunakan SELECT * FROM diikuti nama tabelnya.
Saring baris
Tampilkan nama peserta yang poinnya lebih dari 20 (kolom: nama).
Petunjuk
Tambahkan filter WHERE poin > 20 setelah nama tabel.
Tiga peringkat teratas
Tampilkan nama dan poin tiga peserta dengan poin tertinggi, urut dari yang paling besar (kolom: nama, poin).
Petunjuk
Pakai ORDER BY poin DESC, lalu tutup dengan LIMIT 3.
Hitung anggota kelompok
Tampilkan setiap kelompok beserta jumlah anggotanya (kolom: kelompok, jumlah).
Petunjuk
Rangkum dengan GROUP BY kelompok dan hitung barisnya memakai COUNT(*).
Gabungkan dua tabel
Tampilkan nama peserta dan judul misi yang sudah mereka selesaikan — tabel penyelesaian menghubungkan keduanya (kolom: nama, judul).
Petunjuk
JOIN peserta ON peserta.id = penyelesaian.peserta_id, lalu JOIN misi ON misi.id = penyelesaian.misi_id.
Total poin per kelompok
Tampilkan total poin setiap kelompok, urut dari total terbesar (kolom: kelompok, total).
Petunjuk
Pakai SUM(poin) dengan GROUP BY, beri nama kolomnya total, lalu ORDER BY total DESC.
Saring hasil rangkuman
Tampilkan kelompok yang total poinnya lebih dari 50 (kolom: kelompok).
Petunjuk
WHERE tidak bisa menyaring hasil SUM — gunakan HAVING setelah GROUP BY.
Progres tersimpan di perangkat ini saja (localStorage) — berpindah perangkat berarti mulai dari awal. Latihan ini tidak masuk perhitungan poin acara.