Я конвертирую старую систему на основе MS-Access в PostgreSQL. В Access поля, которые были созданы в SELECT, могут использоваться как части уравнений для более поздних полей, например:
SELECT
samples.id,
samples.wet_weight / samples.dry_weight - 1 AS percent_water,
100 * percent_water AS percent_water_100
FROM samples;
Когда я делаю это в PostgreSQL, Postgres выдает ошибку:
ОШИБКА: столбец «процент_воды» не существует.
Вот как я могу обойти это, выбрав из подвыбора:
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;
Есть ли какой-нибудь ярлык, как в первом блоке кода, чтобы обойти сложное вложение? Я мог бы также просто сказать 100 * (samples.wet_weight / samples.dry_weight - 1) AS percent_water_100
, но это всего лишь небольшой пример из того, что в моем коде происходит намного более крупная математическая система, когда десятки более сложных математических элементов расположены друг над другом. Я бы предпочел сделать как можно более чисто, не повторяясь.