Cara bermain Antre Urut
- Baca instruksi level. Arena menampilkan antrean hasil query-mu, lalu hasil query-mu dan hasil yang dicari (putus-putus).
- Ketik query di editor. Tiap baris antrean menampilkan nilai kunci urutnya. Kunci yang memutus seri dengan baris di atasnya diberi kotak tebal, dan baris yang semua kuncinya sama diberi label seri.
- Kalau ada
LIMITatauOFFSET, kurung hijau menandai baris yang diambil. Baris yang dilewatiOFFSETdan dipotongLIMITdipudarkan. - Tekan Cek jawaban atau Ctrl + Enter. Di game ini urutan baris ikut dinilai, bukan hanya isinya.
- Kalau buntu, buka Petunjuk. Level yang sudah selesai tetap tercentang di browser yang sama.
Yang kamu pelajari
- Level 1
ASC dan DESC
ORDER BYmengurutkan naik secara bawaan.DESCmembaliknya. - Level 2
Kunci urut kedua
Kunci berikutnya hanya dipakai untuk baris yang kunci sebelumnya sama.
- Level 4
Arah per kolom
DESChanya berlaku untuk kunci di depannya:ORDER BY kota, skor DESC. - Level 5
NULL saat diurutkan
Letak NULL berbeda per database.
NULLS FIRSTdanNULLS LASTmenentukannya. - Level 6
Urut dengan alias
Nama dari
ASdiSELECTboleh dipakai diORDER BY. - Level 7
Urut dengan fungsi agregat
ORDER BY MAX(skor)mengurutkan kelompok, walauMAXtidak ditampilkan. - Level 8
LIMIT
Memotong antrean sesudah diurutkan.
- Level 9
OFFSET dan pagination
Halaman n dengan k baris per halaman:
LIMIT k OFFSET (n - 1) * k.
Tanpa ORDER BY, urutan tidak dijamin
Tabel di database tidak punya urutan baris. Query tanpa ORDER BY boleh mengembalikan baris dalam urutan apa pun, dan urutannya bisa berubah setelah data diubah atau database memilih cara baca lain. Hasil yang kebetulan rapi hari ini bukan jaminan.
Hal yang sama berlaku untuk baris seri. ORDER BY skor DESC tidak menentukan siapa yang lebih dulu di antara dua peserta bernilai 92. Untuk pagination, tambahkan kunci yang unik di akhir, misalnya ORDER BY skor DESC, id, supaya satu baris tidak muncul di dua halaman atau hilang di antaranya.
Tanya jawab
Apakah harus daftar akun untuk bermain?
Tidak. Semua level bisa dimainkan tanpa akun. Kemajuanmu disimpan di browser yang kamu pakai, jadi akan hilang kalau data browser dihapus.
Apakah query-nya dijalankan di database sungguhan?
Tidak. Query diurai dan dijalankan oleh mesin SQL kecil di browser dengan data contoh, jadi tidak ada data yang bisa rusak.
Di mana NULL muncul saat diurutkan?
MySQL, SQLite, dan SQL Server menganggap NULL paling kecil, jadi NULL di depan saat urut naik. PostgreSQL dan Oracle menganggapnya paling besar. Game ini mengikuti MySQL dan SQLite. NULLS FIRST dan NULLS LAST ada di PostgreSQL, Oracle, dan SQLite; di MySQL pakai COALESCE atau ORDER BY skor IS NULL, skor.
Kenapa LIMIT dengan OFFSET besar bisa lambat?
Database tetap harus mengurutkan dan melewati semua baris sebelum OFFSET, jadi halaman ke-1000 lebih berat dari halaman pertama. Untuk daftar panjang, banyak aplikasi memakai keyset pagination: WHERE id > id_terakhir ORDER BY id LIMIT 20.
Apakah LIMIT 3, 3 atau ORDER BY 2 bisa dipakai?
Belum di game ini. LIMIT 3, 3 hanya ada di MySQL, dan nomor kolom seperti ORDER BY 2 mudah salah saat kolom di SELECT diubah. Tulis LIMIT 3 OFFSET 3 dan nama kolom atau aliasnya.