Estou convertendo um antigo sistema baseado no MS-Access para PostgreSQL. No Access, os campos criados em SELECTs podem ser usados como partes de equações para campos posteriores, como este:
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
Quando faço isso no PostgreSQL, o Postgres lança um erro:
ERRO: a coluna "percent_water" não existe.
Veja como posso solucionar isso, selecionando uma sub-seleção:
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;
Existe algum tipo de atalho como no primeiro bloco de código para contornar aninhamentos complicados? Eu também poderia dizer 100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
, mas este é apenas um pequeno exemplo do que é um sistema de matemática muito maior acontecendo no meu código, com dezenas de bits de matemática mais complexos empilhados um sobre o outro. Eu preferiria fazer o mais limpo possível sem me repetir.