Saya mengonversi sistem berbasis MS-Access lama ke PostgreSQL. Di Access, bidang yang dibuat dalam SELECT dapat digunakan sebagai bagian dari persamaan untuk bidang selanjutnya, seperti ini:
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
Ketika saya melakukan ini di PostgreSQL, Postgres melempar kesalahan:
GALAT: kolom "persen_water" tidak ada.
Inilah cara saya dapat mengatasinya, dengan memilih dari sub-pilihan:
SELECT
s1.id,
s1.percent_water,
100 * s1.percent_water AS percent_water_100
FROM (
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water
FROM samples
) s1;
Apakah ada cara pintas seperti di blok kode pertama untuk berkeliling bersarang rumit? Saya juga bisa mengatakannya 100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
, tetapi ini hanyalah contoh kecil dari apa yang terjadi dengan sistem matematika yang lebih besar dalam kode saya, dengan lusinan bit matematika yang lebih rumit ditumpuk satu sama lain. Saya lebih suka melakukan sebersih mungkin tanpa mengulangi sendiri.