Lewati ke konten

Kembali ke Belajar

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.

0/7 tantangan selesai Menyiapkan mesin SQL…

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

Dasar

Tampilkan seluruh isi tabel peserta (semua kolom).

Petunjuk

Gunakan SELECT * FROM diikuti nama tabelnya.

Saring baris

Dasar

Tampilkan nama peserta yang poinnya lebih dari 20 (kolom: nama).

Petunjuk

Tambahkan filter WHERE poin > 20 setelah nama tabel.

Tiga peringkat teratas

Menengah

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

Menengah

Tampilkan setiap kelompok beserta jumlah anggotanya (kolom: kelompok, jumlah).

Petunjuk

Rangkum dengan GROUP BY kelompok dan hitung barisnya memakai COUNT(*).

Gabungkan dua tabel

Menengah

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

Lanjutan

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

Lanjutan

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.