SQL Interview Prep · Pelajaran

Mengurutkan Berdasarkan Ekspresi dan Alias

Pelajari kapan referensi alias sah digunakan dalam ORDER BY dan cara mengurutkan berdasarkan logika terhitung.

Pelajaran 4 dari 413 langkah

Mengurutkan Berdasarkan Ekspresi dan Alias adalah pelajaran SQL 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 SQL Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL 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 BY konsisten di seluruh mesin utama, berbeda dengan WHERE/HAVING.
  • SELECT DISTINCT membatasi Anda: Anda hanya dapat menggunakan ORDER BY pada ekspresi yang muncul dalam daftar SELECT.

Pemeriksaan Singkat

Hubungkan visibilitas alias dengan urutan eksekusi.

Rangkuman

Mengurutkan berdasarkan ekspresi dan alias:

  • ORDER BY menerima alias, ekspresi mentah, fungsi, logika CASE, dan posisi ordinal.
  • Alias berfungsi karena ORDER BY dijalankan setelah SELECT dalam urutan logis.
  • Gunakan CASE untuk pengurutan kategori khusus.
  • Hindari nama alias yang bertabrakan dengan kolom nyata untuk mencegah ambiguitas.
  • Fungsi dalam kunci pengurutan dapat menghambat penggunaan indeks.
Gratis untuk memulai

Belajar SQL dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

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 SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL 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 SQL 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 SQL Interview Prep?

Tidak diperlukan pengalaman sebelumnya. SQL 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 SQL Interview Prep ini?

Ya. Setiap pelajaran SQL 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

  1. Pengurutan Multi-Kolom dan Penempatan NULL
  2. LIMIT, OFFSET, dan FETCH FIRST
  3. Mengembalikan Baris Top-N secara Andal
  4. Mengurutkan Berdasarkan Ekspresi dan Alias
← Kembali ke SQL Interview Prep