Mengurutkan Berdasarkan Ekspresi dan Alias
Pelajari kapan referensi alias sah digunakan dalam ORDER BY dan cara mengurutkan berdasarkan logika terhitung.
Mengurutkan Berdasarkan Ekspresi dan Alias adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.
ORDER BY Lebih Fleksibel daripada yang Anda Kira
Banyak kandidat secara mengejutkan percaya bahwa ORDER BY hanya dapat merujuk ke kolom biasa. Faktanya, Anda dapat mengurutkan berdasarkan ekspresi, nama alias, posisi kolom, dan logika CASE.
Pewawancara menggunakan hal ini untuk menguji apakah Anda memahami urutan eksekusi kueri secara logis, karena ORDER BY dijalankan setelah SELECT, dan itulah alasan nama alias dapat digunakan di sini tetapi tidak di WHERE.
Mengapa Nama Alias Sah Digunakan dalam ORDER BY
Ingat urutan eksekusi logis: FROM, WHERE, GROUP BY, HAVING, SELECT, lalu ORDER BY. Karena SELECT dijalankan sebelum ORDER BY, nama alias kolom yang Anda tetapkan di SELECT sudah tersedia ketika ORDER BY dievaluasi.
Itulah alasan tepat nama alias berfungsi di ORDER BY tetapi gagal di WHERE, sebuah pertanyaan yang sering dihubungkan pewawancara dengan urutan eksekusi.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;Mengurutkan Berdasarkan Ekspresi Mentah
Anda juga dapat mengulangi seluruh ekspresi dalam ORDER BY alih-alih menggunakan nama alias. Keduanya valid dan hasilnya identik.
Menggunakan nama alias lebih rapi dan menghindari pengulangan logika, tetapi beberapa tim lebih memilih ekspresi yang ditulis secara eksplisit demi kejelasan. Dalam wawancara, keduanya dapat diterima selama Anda dapat memberikan alasannya.
SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;Mengurutkan Berdasarkan Posisi Kolom (Urutan)
Anda dapat mengurutkan berdasarkan posisi urutan suatu item dalam daftar SELECT: ORDER BY 2 mengurutkan berdasarkan kolom kedua yang dipilih. Cara ini ringkas tetapi rapuh, karena mengubah urutan daftar SELECT secara diam-diam mengubah pengurutan.
Saran untuk wawancara: ketahui bahwa fitur ini ada, tetapi umumnya tidak disarankan dalam kode produksi demi keterbacaan dan keamanan.
SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;Mengurutkan Berdasarkan CASE Terhitung
Pola yang kuat adalah mengurutkan berdasarkan ekspresi CASE untuk menerapkan urutan khusus yang tidak berdasarkan alfabet. Di sini, kita menampilkan penerima gaji tinggi terlebih dahulu dengan menggunakan prioritas turunan.
CASE menghasilkan peringkat pengurutan yang tidak memiliki kolom tersendiri; mesin mengevaluasinya khusus untuk pengurutan.
SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
salary DESC;Pengurutan Kategori Khusus
Kolom status jarang terurut dengan baik secara alfabetis. "aktif, tertunda, ditutup" akan diurutkan secara alfabetis menjadi "aktif, ditutup, tertunda," dan itu salah. CASE memetakan setiap nilai ke peringkat yang telah ditentukan.
Ini merupakan persyaratan pelaporan yang sering muncul dan cara yang rapi untuk menunjukkan bahwa Anda dapat mengendalikan pengurutan di luar urutan alami.
SELECT id, status
FROM orders
ORDER BY CASE status
WHEN 'active' THEN 1
WHEN 'pending' THEN 2
WHEN 'closed' THEN 3
ELSE 4
END;Mengurutkan Berdasarkan Hasil Fungsi
Fungsi skalar apa pun dapat digunakan dalam ORDER BY. Misalnya, urutkan tanpa membedakan huruf besar-kecil dengan LOWER, atau urutkan berdasarkan panjang teks maupun bagian tanggal.
Catatan: membungkus kolom dalam fungsi saat mengurutkan dapat mencegah mesin menggunakan indeks pada kolom tersebut, sama seperti yang terjadi dalam WHERE.
SELECT name
FROM employees
ORDER BY LOWER(name) ASC;Nama Alias vs Agregat dalam GROUP BY
Dalam kueri yang dikelompokkan, Anda sering mengurutkan berdasarkan agregat. Anda dapat merujuk ke nama alias agregat dalam ORDER BY, sekali lagi karena SELECT dijalankan terlebih dahulu.
Kueri di bawah menghitung pesanan per pelanggan dan mengurutkannya berdasarkan jumlah tersebut secara menurun, dengan menggunakan nama alias order_count.
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;Jebakan Benturan Nama Alias
Kasus khusus yang disukai pewawancara: bagaimana jika nama alias Anda sama dengan nama kolom yang sebenarnya? Sebagian besar mesin menyelesaikan nama tanpa kualifikasi dalam ORDER BY sebagai nama alias dalam daftar SELECT terlebih dahulu, yang dapat mengejutkan Anda.
Jika Anda memberi alias salary * 2 AS salary lalu menggunakan ORDER BY salary, Anda mengurutkan berdasarkan nilai yang telah digandakan, bukan kolom aslinya. Hindari menggunakan kembali nama kolom sebagai nama alias untuk menghindari ambiguitas ini.
SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;Menggabungkan Ekspresi dan Arah Pengurutan
Anda dapat menggabungkan semuanya dalam satu klausa: ekspresi, lalu nama alias, lalu kolom biasa, masing-masing dengan arahnya sendiri. Contoh tersebut mengurutkan berdasarkan tingkat bonus terhitung secara menurun, lalu berdasarkan nama secara menaik sebagai pemecah seri.
Pelapisan kunci seperti ini merupakan dasar dari kueri pelaporan nyata.
SELECT name, salary,
salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;Catatan Portabilitas
Meskipun ekspresi dan nama alias dalam ORDER BY didukung secara luas, ada beberapa catatan untuk wawancara:
- Posisi urutan (
ORDER BY 2) merupakan bagian dari standar, tetapi tidak disarankan. - Visibilitas nama alias dalam
ORDER BYkonsisten di seluruh mesin utama, berbeda denganWHERE/HAVING. SELECT DISTINCTmembatasi Anda: Anda hanya dapat menggunakanORDER BYpada ekspresi yang muncul dalam daftar SELECT.
Pemeriksaan Singkat
Hubungkan visibilitas alias dengan urutan eksekusi.
Rangkuman
Mengurutkan berdasarkan ekspresi dan alias:
ORDER BYmenerima alias, ekspresi mentah, fungsi, logikaCASE, dan posisi ordinal.- Alias berfungsi karena
ORDER BYdijalankan setelahSELECTdalam urutan logis. - Gunakan
CASEuntuk pengurutan kategori khusus. - Hindari nama alias yang bertabrakan dengan kolom nyata untuk mencegah ambiguitas.
- Fungsi dalam kunci pengurutan dapat menghambat penggunaan indeks.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengurutkan Berdasarkan Ekspresi dan Alias” gratis?
Ya — teks lengkap “Mengurutkan Berdasarkan Ekspresi dan Alias” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengurutkan Berdasarkan Ekspresi dan Alias”?
Pelajari kapan referensi alias sah digunakan dalam ORDER BY dan cara mengurutkan berdasarkan logika terhitung. Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?
Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Mengurutkan Berdasarkan Ekspresi dan Alias” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?
Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pengurutan Multi-Kolom dan Penempatan NULL
- LIMIT, OFFSET, dan FETCH FIRST
- Mengembalikan Baris Top-N secara Andal
- Mengurutkan Berdasarkan Ekspresi dan Alias