Anda mengajukan dua pertanyaan:
1.
Mengapa saya tidak dapat merujuk ke alias biaya SELECT di klausa WHERE?
2.
Tapi mengapa memesan dengan desc biaya; diperbolehkan?
Manual memiliki jawaban untuk keduanya di sini:
Nama kolom keluaran dapat digunakan untuk merujuk ke nilai kolom di
ORDER BY
danGROUP BY
klausa, tetapi tidak dalamWHERE
atauHAVING
klausa; di sana Anda harus menuliskan ekspresinya.
Ini ditentukan oleh standar SQL dan alasannya adalah urutan kejadian dalam SELECT
pertanyaan. Pada saat WHERE
klausa diterapkan, kolom output di SELECT
daftar belum dihitung. Tetapi ketika datang ke ORDER BY
, kolom keluaran sudah tersedia.
Jadi, meski awalnya tidak nyaman dan membingungkan, ini masih masuk akal.
Terkait:
- PostgreSQL Dimana menghitung kondisi
- Cara terbaik untuk mendapatkan jumlah hasil sebelum LIMIT diterapkan